我一直在考虑类似的问题,但我还没有能够指出我的错误。
application.html.erb
,并且在显示其他flash消息(例如“成功登录”)时,它会起作用:
<% flash.each do |name, msg| %>
<% if msg.is_a?(String) %>
<div class="alert alert-dismissible alert-<%= name.to_s == 'notice' ? 'success' : 'danger' %>">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<%= content_tag :div, msg, :id => "flash_#{name}" %>
</div>
<% end %>
<% end %>
但是,不管怎样,我的任何模型在登录时都不会显示错误(我有3个不同的模型)。
这是对请求的响应:
Started POST "/users/sign_in" for 127.0.0.1 at 2017-10-14 16:25:35 -0300
Processing by Users::SessionsController#create as HTML
Parameters: {"utf8"=>"â", "authenticity_token"=>"5yM5EkGw1WVrFsaHm39Em7JkXgu0OZb5FDeO7bJA+SEQBYBybfw7ghbK1WM5I8krbBjP/pRWLF+PG0B2k+Crkw==", "user"=>{"email"=>"user0@gmail.com", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Iniciar sesión"}
User Load (1.0ms) SELECT "users".* FROM "users" WHERE "users"."email" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["email", "user0@gmail.com"], ["LIMIT", 1]]
Completed 401 Unauthorized in 107ms (ActiveRecord: 5.0ms)
Processing by Users::SessionsController#new as HTML
Parameters: {"utf8"=>"â", "authenticity_token"=>"5yM5EkGw1WVrFsaHm39Em7JkXgu0OZb5FDeO7bJA+SEQBYBybfw7ghbK1WM5I8krbBjP/pRWLF+PG0B2k+Crkw==", "user"=>{"email"=>"user0@gmail.com", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Iniciar sesión"}
Rendering users/sessions/new.html.erb within layouts/application
Rendered users/sessions/new.html.erb within layouts/application (2.0ms)
Rendered layouts/_navigation.html.erb (1.0ms)
Rendered layouts/_messages.html.erb (0.5ms)
Completed 200 OK in 285ms (Views: 223.4ms | ActiveRecord: 0.0ms)
但如果用户/密码错误或用户尚未确认,则flash为空。
我重新定义了控制器,使其能够在多个模型中正确工作,如中所述
wiki
class Users::SessionsController < Devise::SessionsController
include Accessible
skip_before_action :check_user, only: :destroy
end
但我还没有重新定义方法。