使用Devise,我想知道是否有辦法刪除特定的Flash消息? (成功簽署)。Devise/Rails - 如何刪除特定的Flash消息? (已成功登錄)
我關心視圖中的其他味精,所以只適用於已登錄和已登出的味精。 我是否必須覆蓋控制器或有其他方法?
謝謝!
使用Devise,我想知道是否有辦法刪除特定的Flash消息? (成功簽署)。Devise/Rails - 如何刪除特定的Flash消息? (已成功登錄)
我關心視圖中的其他味精,所以只適用於已登錄和已登出的味精。 我是否必須覆蓋控制器或有其他方法?
謝謝!
您只需將其定義爲本地文件中的空字符串即可。在這種情況下,你什麼都看不到。
好的!
正如Shingara說我在devise.en.yml
sessions:
signed_in: ''
限定一個空字符串,我也改變一個位以下行(由漂亮發電機提供):
<% flash.each do |name, msg| %>
<%= content_tag :div, msg, :id => "flash" if msg.length > 0 %>
<% end %>
在這樣,我的CSS不會出現。
稍微整理一下,您可以將「msg.length> 0」更改爲「msg.present?」。它會更具可讀性。 – 2011-03-14 07:53:43
這個文件通常位於'config/locales/devise.en.yml' – philfreo 2014-01-05 01:03:27
在區域文件空字符串(如上面所建議的),而且還添加以下CSS代碼段隱藏(而不是用你的閃光燈意見瞎搞)
.flash.alert:empty {
display: none;
}
從我的角度來看,我不明白這一點在清空字符串翻譯時,可以輕鬆修改控制器的工作方式。 我想這種方式更加正確和令人滿意。
更好的答案可以是重寫sessionController中的destroy方法。
只是創建放在一個文件:應用程序/控制器/ sessions_controller.rb
正如你可以看到我們發表意見線製作Flash的消息。
class SessionsController < Devise::SessionsController
# DELETE /resource/sign_out
def destroy
signed_out = (Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name))
#set_flash_message :notice, :signed_out if signed_out && is_flashing_format?
yield if block_given?
respond_to_on_destroy
end
end
你可能不想這樣做,因爲你是猴子補丁。如果修復了錯誤,那麼你正在失去修復。 通過設置您不關心的空字符串,並確保您不會打印出空字符串消息,而是按照設計的方式使用系統。 – 2015-07-03 18:53:06
另一種靈活的方式,這是動作後取消設置的通知:
class SessionsController < Devise::SessionsController
after_action :remove_notice, only: :destroy
private
def remove_notice
flash[:notice] = nil
end
end
有了這個解決方案,您可以添加條件,以消除或不通知。
我認爲,現在設計理解,如果您將config/locals/devise.en.yml
中的錯誤消息更改爲空字符串,它會自動忽略它。至少這是我的工作。
您可以這樣做,請相應地更改條件類型和閃存類型。
flash.delete(:alert)if flash [:alert] ==「您需要先登錄或註冊才能繼續。」 @drivers = params [:keyword] .blank? ? []:Driver.find(params [:keyword])
您可以在過濾器之前執行此操作。
另一種方法是,如果你忽略了設計的控制器,在創建行動,把這個代碼,刪除閃存消息:
class MyDevise::SessionsController < Devise::SessionsController
# POST /resource/sign_in
def create
super
flash.delete(:notice)
end
# DELETE /resource/sign_out
def destroy
super
flash.delete(:notice)
end
end
this was answered in this other SO question. 有關如何重寫設計控制器一篇博客文章,看到my blog post
謝謝shingara,其實我做到了,但我的CSS仍然出現 – benoitr 2010-11-04 15:20:56
測試,如果它是空白的。 – shingara 2010-11-04 16:18:31
只是做了謝謝! – benoitr 2010-11-04 16:23:26