Ruby on rails 设计;“登录”;“表格显示”;无效的电子邮件或密码“;错误消息不正确

Ruby on rails 设计;“登录”;“表格显示”;无效的电子邮件或密码“;错误消息不正确,ruby-on-rails,ruby,session,error-handling,devise,Ruby On Rails,Ruby,Session,Error Handling,Devise,我正在开发一个(相对)简单的Rails应用程序。我正在使用Desive gem处理用户会话。每当我导航到localhost:3000/users/sign_in时,我都会看到designe的错误消息,上面写着“无效的用户名或密码”。即使在第一次尝试登录后也会发生这种情况,之前没有登录尝试。我试图清除我的web浏览器的缓存,但没有结果。可以在中找到整个代码库,但以下是一些可能相关的代码片段: app/views/layouts/application.html.erb: ... #section

我正在开发一个(相对)简单的Rails应用程序。我正在使用Desive gem处理用户会话。每当我导航到localhost:3000/users/sign_in时,我都会看到designe的错误消息,上面写着“无效的用户名或密码”。即使在第一次尝试登录后也会发生这种情况,之前没有登录尝试。我试图清除我的web浏览器的缓存,但没有结果。可以在中找到整个代码库,但以下是一些可能相关的代码片段:

app/views/layouts/application.html.erb:

...
#section where Devise alrts are displayed
<% if notice %>
  <p class="alert alert-success"><%= notice %></p>
<% end %>
<% if alert %>
  <p class="alert alert-danger"><%= alert %></p>
<% end %>
...
<div class="container">
<h2>Sign in</h2>

<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
<%= f.email_field :email, autofocus: true, placeholder: "email", class: "form-control login-credentials" %><br>
<%= f.password_field :password, autocomplete: "off", placeholder: "password", class: "form-control login-credentials" %></br>
<% if devise_mapping.rememberable? -%>
    <div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div>
<% end -%>
<div class="btn-group">
    <%= f.submit "Sign in", class: "btn btn-primary" %>
<% end %>
<div class="btn-group">
    <%= render "devise/shared/links" %>
</div>

请告诉我是否有任何信息可以帮助解决此问题。

我将更改以下内容:

--

--

#app/layouts/application.html.erb
#删除引用以设计警报
#app/views/designe/sessions/new.html.erb
...

您可以

我通过将
按钮的
:method
更改为
,将包含登录页面链接的链接从默认值
:post
更改为
:get
,解决了此问题。我认为使用
:post
会导致尝试使用空白凭据登录,从而显示错误消息。以下是我的代码修复:

<div class="btn-group">
  <%= button_to 'Sign in', new_user_session_path, method: :get, class: :'btn btn-primary btn-lg' %>
</div>


我做了您建议的更改,但是现在我没有看到任何Desive错误消息,即使我应该看到。嗯,好的!这是用于
sign\u in
/正确的
/users/sign\u in
页面。我解决了问题,请参阅我的答案。
#config/routes.rb
root 'welcome#index'

devise_for :users

resources :addresses do
    collection do
        get 'api/:key', action: :api
    end
end

resources :staticpages, only: [] do
   collection do
      get :faq
      get :api
   end
end
#app/layouts/application.html.erb
#remove references to devise alerts

#app/views/devise/sessions/new.html.erb
<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
     <%= devise_error_messages! %>
     ...
<% end %>
<div class="btn-group">
  <%= button_to 'Sign in', new_user_session_path, method: :get, class: :'btn btn-primary btn-lg' %>
</div>