如何为Devise创建自定义Flash消息?
问题描述:
我试过以下,但它不工作。它仍然使用默认的Flash消息。如何为Devise创建自定义Flash消息?
class Users::SessionsController < Devise::SessionsController
after_action :custom_welcome, :only => [:create]
def custom_welcome
flash.notice = "Welcome back "+current_user.name+"." if flash.keys.include?(:notice)
end
end
参考:https://github.com/plataformatec/devise#configuring-controllers
答
两种方式:
用于网页设计自己的布局(
layout
关键字与控制器参数)。在布局中,您可以分开显示您的设计信息。如果你的应用程序有点复杂,你不想引入布局,创建设计控制器(它可以通过运行devise rake命令来完成),那么只需在你的闪存中有一个标志。
例如:
flash[:devise] = true
检查这个标志在你的局部视图负责为您的Flash消息生成HTML:
<% if flash[:devise] %>
#...
<% else %>
# ...
<% end %>
答
这个工作。
flash.notice = "Welcome back #{current_user.name}." if flash.key?(:notice)
答
您正在重写设备控制器,因此您需要告诉您的应用程序要使用该控制器。执行以下步骤,routes.rb
(如果你还没有这样做的话):
devise_for :users, controllers: { sessions: 'users/sessions' }
为了扩大这一点,如果你仍然得到默认的闪光灯的消息,这是因为设计仍然使用原来的控制器,通过定义您要告诉它使用它的定制控制器。
这不回答这个问题。 –