2010-11-09 41 views
3

使用Rails與設計,任何時候你登錄或註銷設計吐出一個Flash通知在頁面上看起來不需要從UI的角度來看,它通常很明顯,對吧?設計 - Flash Notices

有沒有辦法在設計中關閉登錄和註銷閃存通知?

謝謝

回答

0

即使指定空字符串,也可以轉到本地化文件並自定義任何Flash消息。查看i8n下的文檔,你會看到它是如何完成的。

+0

謝謝史蒂夫,但我不想定製,我想阻止他們被設置。設置一個空字符串是爲了讓它起作用嗎? – AnApprentice 2010-11-10 00:02:04

+0

奇怪的是,我刪除了它「signed_in:'成功簽名'',它仍然出現。 – AnApprentice 2010-11-10 00:04:51

+0

並設置字符串爲空顯示一個空的閃存,這是非常糟糕的:) – AnApprentice 2010-11-10 00:05:17

1

Devise有一種自定義此類行爲的方法:覆蓋控制器。打開Devise源代碼,找到app/controllers/sessions_controller並將其複製到您的應用程序中。設計將開始使用自己的控制器而不是自己的控制器。從那裏您可以輕鬆修改Flash消息。

+0

謝謝。我試圖,但無法弄清楚如何更新routes.rb文件。你是親戚嗎?這不起作用「devise_for:users,:controllers => {:invitations =>」invitations「,:sessions =>」sessions「}」它使得這些控制器中的方法不能再在設計中找到視圖。 – AnApprentice 2010-11-10 04:34:24

+0

除了'devise_for:users',你實際上不需要在路由中做任何事情。從這裏你有2個選擇。創建一個'class SessionsController 2010-11-10 06:56:29

+0

我認爲這是Devise中的一個錯誤特徵。我已經分叉回購並修復了它。看看這是否解決了這個問題:https://github.com/sxross/devise – 2010-11-10 19:06:14

7

只需在您的sessions_controller.rb中添加此代碼即可。

class SessionsController < Devise::SessionsController 
    after_action :clear_sign_signout_flash, :only => [:create, :destroy] 
protected 
    def clear_sign_signout_flash 
    if flash.key?(:notice) 
     flash.delete(:notice) 
    end 
    end 
end 

希望這有助於:-)

+1

重構:flash.delete(:notice)if flash.keys.include?(:notice) – dennis 2014-01-20 15:20:42

+0

flash.key?(:notice) – 2015-12-01 18:25:35

+0

You必須在正確的位置創建控制器,並且必須修改路由以使用新的控制器。請參閱https://github.com/plataformatec/devise#configuring-controllers – Chloe 2017-09-22 23:09:00