如何为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

https://*.com/a/5513172/148844

两种方式:

  1. 用于网页设计自己的布局(layout关键字与控制器参数)。在布局中,您可以分开显示您的设计信息。

  2. 如果你的应用程序有点复杂,你不想引入布局,创建设计控制器(它可以通过运行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' } 

为了扩大这一点,如果你仍然得到默认的闪光灯的消息,这是因为设计仍然使用原来的控制器,通过定义您要告诉它使用它的定制控制器。

+0

这不回答这个问题。 –