2017-09-22 12 views
0

私は以下を試みましたが、動作しません。それでもデフォルトのフラッシュメッセージが使用されています。Deviseのカスタムフラッシュメッセージを作成するにはどうすればよいですか?

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://stackoverflow.com/a/5513172/148844

答えて

1

二つの方法:

  1. 工夫ページ(コントローラ内のパラメータを持つlayoutキーワード)のために独自のレイアウトを使用してください。レイアウトでは、あなたの討議メッセージを表示するために別の部分を持つことができます。

  2. あなたのアプリが複雑でレイアウトを導入したくない場合は、deviseコントローラを作成します(これはdevise rakeコマンドを実行して行うことができます)。例えば

:あなたのフラッシュメッセージのHTMLを生成するための責任があなたの部分図で、このフラグの

flash[:devise] = true 

チェック:これが働い

<% if flash[:devise] %> 
    #... 
<% else %> 
    # ... 
<% end %> 
0

flash.notice = "Welcome back #{current_user.name}." if flash.key?(:notice) 
0

あなたは工夫コントローラをオーバーライドしている、そのため、あなたはそのコントローラを使用したいアプリケーションを伝える必要があります。 routes.rbで次の操作を行い(まだ行っていない場合):

devise_for :users, controllers: { sessions: 'users/sessions' } 

をあなたはまだデフォルトのフラッシュメッセージを取得している場合は、この上で展開するには、工夫がまだで、元のコントローラを使用しているためですそれを使用するように指示しているカスタマイズされたコントローラを定義します。

+0

これは質問に答えません。 –

関連する問題