私は私のRails 3アプリケーションにDeviseを使用しています。Devise Railsの警告メッセージをオフにします
Deviseのアラートメッセージのサインオン/オフを無効にする方法を教えてください。
私は私のRails 3アプリケーションにDeviseを使用しています。Devise Railsの警告メッセージをオフにします
Deviseのアラートメッセージのサインオン/オフを無効にする方法を教えてください。
あなたがいずれかを実行できます。
Goは\ロケールを設定へ\、あなたは文字列を空にしたい行を変更します(それらが動作しません削除)devise.en.yml。したがって、次のようになります。
sessions:
signed_in: ''
signed_out: ''
deviseのセッションコントローラを拡張/上書きします。これを行うには、hereからcreate
とdestroy
アクションコードをコピーして、このような工夫のセッションコントローラから継承するコントローラ(のは、セッションそれを呼びましょう)、それをペーストするには:
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: ''
...
今のところ、deviseは空の文字列をフラッシュアラートとして渡します。しかし、今では、メッセージが空の文字列
#<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
方法は無い空白のメッセージできしむクリーンな配列であなたを残して、任意のゼロ値を削除します。
Rails 4とDevise 3.4以降では、config/locales/en.ymlが必要です(en:とdevise:をスコープに追加することを忘れないでください)。 –
完璧に動作します!私は翻訳を空白の画面にすることができず、一回のフラッシュ通知を抑制することはできませんでした! – danielricecodes