[英]Turn off alert message in Devise Rails
我正在使用Devise for my Rails 3應用程序。
如何成功關閉Devise的警報消息以進行登錄/注銷?
你可以:
轉到config \\ locales \\ devise.en.yml並更改要清空字符串的行(刪除它們將不起作用)。 所以,像這樣:
sessions: signed_in: '' signed_out: ''
或者擴展/覆蓋設備的會話控制器。 為此,請從此處復制create
和destroy
動作代碼,並將其粘貼到從devise的會話控制器繼承的控制器(讓我們稱之為會話)中,如下所示:
class SessionsController < Devise::SessionsController
然后刪除對set_flash_message的調用。 最后,編輯您的路線文件,以使此更改生效:
devise_for :users, :controllers => { :sessions => 'sessions' }
在其他人所說的基礎上,這種方式可能比擴展設計或類似的東西容易一些。
確保使用空字符串而不是刪除整行,否則設計將返回使用該消息的默認值。
# blank out any string you don't want to render as a message
devise:
failure:
already_authenticated: ''
unauthenticated: ''
unconfirmed: ''
...
現在,設計仍會將空字符串作為閃光警報傳遞。 但現在它看起來像這樣,消息是一個空字符串
#<ActionDispatch::Flash::FlashHash:0xa7647c4
@closed=false,
@flashes={:alert=>""},
@now=nil,
@used=#<Set: {:alert}>>
我在我的ApplicationHelper文件中使用一個幫助器方法來處理收集所有消息。 你可以這樣做,但這會給你一個想法。
def all_messages
# Standard flash messages
messages = flash.map{|key,val| {:type=>key, :message=>val} unless val.blank? }.compact
# |-------------------------|
# This is where the magic happens. This is how I ignore any blank messages
# Model validation errors
model = instance_variable_get("@#{controller_name.singularize}")
unless model.nil?
messages += model.errors.full_messages.map do |msg|
{:type=>:error, :message=>msg}
end
end
return messages
end
瞧, unless val.blank?
語句將任何空值映射到nil, .compact
方法將刪除任何nil值,留下一個沒有空白消息的干凈數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.