Вход в систему Devise всегда возвращает «Неверный адрес электронной почты или пароль», даже если они верны - PullRequest
0 голосов
/ 13 апреля 2019

Я знаю, что это, по-видимому, частый вопрос (я видел много ответов здесь), но я пока не могу его исправить. Итак ... Я создаю простое приложение для блога с devise gem, но когда я пытаюсь войти в систему, я всегда получаю "Неверный адрес электронной почты или пароль". сообщение: /

На самом деле, это мой первый настоящий проект с рельсами, так что иногда я немного заблудился с маршрутами и т. Д. Кстати, я бы сказал, что ошибка, вероятно, вызвана файлом маршрутов. Пожалуйста, я был бы признателен за помощь:)

Мой файл rout.rb:

Rails.application.routes.draw do

  root 'posts#index'

  resources :posts do
    resources :comments
  end 

  devise_for :users
  devise_scope :user do
    get "login", :to => "devise/sessions#new"
    get "logout",   :to => "devise/sessions#destroy"
  end

Файл моих сеансов / new.html.erb:

<div class="container mt-3 pb-3">
  <div class="row">
    <div class="col-lg-6 border">
      <h1>Login</h1>

        <%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
          <div class="form-group">
            <%= label_tag :email, "Email" %>
            <%= text_field_tag :email, "", autofocus: true, :class =>"form-control" %>
          </div>
          <div class="form-group">
            <%= label_tag :password, "Senha" %>
            <%= password_field_tag :password, "", :class =>"form-control" %>
          </div>
          <div class="form-group">
            <%= submit_tag "Entrar", :class =>"form-control btn btn-outline-dark" %>
          </div>
        <% end %>

      <%= render "devise/shared/links" %>

    </div>
  </div>
</div>

Мои регистрации / _form.html.erb:

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
  <%= render "devise/shared/error_messages", resource: resource %>

  <div class="form-group">
    <%= f.label :username, "Nome" %>
    <%= f.text_field :username, autofocus: true, autocomplete: "username", :class =>"form-control" %>
  </div>

  <div class="form-group">
    <%= f.label :email, "Email" %>
    <%= f.email_field :email, autocomplete: "email", :class =>"form-control" %>
  </div>

  <div class="form-group">
    <%= f.label :password, "Senha" %>
    <% if @minimum_password_length %>
    <em>(No mínimo <%= @minimum_password_length %> caracteres)</em>
    <% end %><br />
    <%= f.password_field :password, autocomplete: "new-password", :class =>"form-control" %> 
  </div>

  <div class="form-group">
    <%= f.label :password_confirmation, "Confirme sua senha" %><br />
    <%= f.password_field :password_confirmation, autocomplete: "new-password", :class =>"form-control" %>
  </div>

  <div class="form-group">
    <%= f.submit "Criar", :class =>"form-control btn btn-outline-dark" %>
  </div>
<% end %>

ПРОСТО ДРУГОЙ ВЕЩИ! МОЖЕТ ЭТО ВАЖНО ...

У меня есть панель навигации, отображаемая в "layouts / application.html.erb", которая показывает имя текущего пользователя и кнопку выхода из системы, когда пользователь подключен, и кнопку входа в систему, когда сеансов нет.

<% unless current_page? (login_path) %>
    <%= link_to 'Entrar', login_path, :class =>"btn btn-outline-light" %>
<% end %>

1 Ответ

0 голосов
/ 13 апреля 2019

Ваша ошибка была вызвана неправильной формой sign_in.Я изменил эту часть

        <%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
          <div class="form-group">
            <%= label_tag :email, "Email" %>  
            <%= text_field_tag :email, "", autofocus: true, :class =>"form-control" %>
          </div>
          <div class="form-group">
            <%= label_tag :password, "Senha" %>
            <%= password_field_tag :password, "", :class =>"form-control" %>
          </div>
          <div class="form-group">
            <%= submit_tag "Entrar", :class =>"form-control btn btn-outline-dark" %>
          </div>
        <% end %>

На эту, и все заработало.

        <%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
          <div class="form-group">
            <%= f.label :email, "Email" %>
            <%= f.text_field :email, autofocus: true, :class =>"form-control" %>
          </div>
          <div class="form-group">
            <%= f.label :password, "Senha" %>
            <%= f.password_field :password, :class =>"form-control" %>
          </div>
          <div class="form-group">
            <%= f.submit "Entrar", :class =>"form-control btn btn-outline-dark" %>
          </div>
        <% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...