gpt4 book ai didi

ruby-on-rails - 如何在设计 Flash 消息中呈现 HTML 和 Rails 助手?

转载 作者:行者123 更新时间:2023-12-04 18:21:20 24 4
gpt4 key购买 nike

我正在尝试从设计 Controller 呈现自定义闪存消息。

它在 View 中呈现如下:

<strong>Your profile is incomplete.</strong> Why not #{ActionController::Base.helpers.link_to 'add some more information', edit_user_registration_path}.

如何在此 Flash 中呈现 HTML 和 Rails 助手?

我在 Controller 中调用闪光灯
set_flash_message :warning, :profile_incomplete

:profile_incomplete在 config/locales/devise.en.yml 中定义。

我尝试将字符串直接放入 Controller 中。这会正确呈现帮助程序,但会显示未找到设计翻译错误。

我试过追加 .html_safe在 devise.en.yml 中,这会导致 yaml 错误。我试过附加到 :profile_incomplete导致 undefined method 'html_safe' for :profile_incomplete:Symbol .而且我尝试附加到纯字符串,这似乎没有做任何事情。

我错过了什么?感谢您的任何建议。

编辑

session_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

设计.en.yml
en:
devise:
sessions:
profile_incomplete:"<strong>Your profile is incomplete.</strong> Why not #{link}."

应用程序.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 %>

最佳答案

这是 set_flash_message 的来源:https://github.com/rymai/devise_invitable/blob/master/lib/devise_invitable/controllers/internal_helpers.rb#L5

您不能在 i18n 文件中添加方法 .. 只是命名插值。我对您的问题的解决方案是:

set_flash_message :warning, :profile_incomplete, :link => link_to('add some more information', edit_user_registration_path)

在 devise.en.yml
...
profile_incomplete: "<strong>Your profile is incomplete.</strong> Why not %{link}"

同样在显示 flash 消息时(可能在 application.html.erb/haml 中)在每条 flash 消息的末尾添加一个 html_safe

关于ruby-on-rails - 如何在设计 Flash 消息中呈现 HTML 和 Rails 助手?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10622547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com