Devise コントローラーからカスタム フラッシュ メッセージをレンダリングしようとしています。
次のようにビューにレンダリングされています。
<strong>Your profile is incomplete.</strong> Why not #{ActionController::Base.helpers.link_to 'add some more information', edit_user_registration_path}.
このフラッシュで HTML および Rails ヘルパーをレンダリングするにはどうすればよいですか?
コントローラーでフラッシュを呼び出しています
set_flash_message :warning, :profile_incomplete
:profile_incomplete
config/locales/devise.en.yml で定義されています。
文字列をコントローラーに直接入れてみました。これにより、ヘルパーが正しくレンダリングされますが、代わりに Devise の翻訳が見つからないというエラーが表示されます。
.html_safe
yaml エラーの原因となる devise.en.yml に追加しようとしました。:profile_incomplete
which cause に追加してみましたundefined method 'html_safe' for :profile_incomplete:Symbol
。そして、プレーン文字列に追加しようとしましたが、何もしていないようです。
私は何が欠けていますか?提案をありがとう。
編集
sessions_controller.rb
def after_sign_in_path_for(resource)
if current_user.completeness < 100
set_flash_message :alert, :profile_incomplete, :link => ActionController::Base.helpers.link_to('add some more information', edit_user_registration_path)
end
end
devise.en.yml
en:
devise:
sessions:
profile_incomplete:"<strong>Your profile is incomplete.</strong> Why not #{link}."
application.html.erb
<% flash.each do |key, msg| %>
<div class="alert alert-<%= key %>">
<a class="close" data-dismiss="alert">x</a>
<%= msg.html_safe %>
</div>
<% end %>