gpt4 book ai didi

html - 来自 Controller 的 Flash 消息 : its html-code is displayed as text

转载 作者:数据小太阳 更新时间:2023-10-29 07:52:18 25 4
gpt4 key购买 nike

在我的 Controller 中,作为 create 的一部分方法,我有一条即时消息:

flash[:success] = "An email was sent to #{@user.email}. Please check your inbox. <br> If you find this email in your junk mail folder, please mark the email as 'Not Junk'.".html_safe

<br>然而,在中间显示为文本而不是将其作为 html 代码处理并在新行上继续文本。这尽管使用了 html_safe在最后。有谁知道可能导致这种情况的原因以及如何处理?

更新:我也在其他 Controller 闪现消息中尝试过。刚刚添加 <br>html_safe查看它的显示方式以及每次它引起问题的时间。在查看页面时,它不会产生任何问题。

根据要求显示闪现消息的代码(但即使我将其减少到 <%= message %> 问题仍然存在):

<% flash.each do |message_type, message| %>
<%= content_tag :div, class: "alert alert-#{message_type}" do -%>
<%= message %>
<button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
<% end -%>
<% end %>

最佳答案

<%= message.html_safe %>

这会默默地将所有通知直接放入 html 中,因此您不要真的想这样做。当且仅当您 100% 确定您的应用永远不会在通知中放置任何用户内容时,您才可以这样做,否则您的应用将容易受到 js 注入(inject)攻击。而是尝试:

Flash message with html_safe from the controller in Rails 4 (safe version)

所以是的,添加 before_filter -> { flash.now[:success] = flash[:success].html_safe if flash[:html_safe] && flash[:success] }到你的 ApplicationController,然后,任何时候你设置 html safe flash[:success]还设置了flash[:html_safe]真实的,就像

flash[:success] = "An email was sent to #{@user.email}. Please check your inbox. <br> If you find this email in your junk mail folder, please mark the email as 'Not Junk'.".html_safe
flash[:html_safe] = true

编辑:是的,您可以在末尾跳过 .html_safe。您可以使其更通用并删除不必要的消息,例如

before_filter -> {
if flash[:html_safe]
flash.delete(:html_safe)
flash.each do |k, message|
flash[k] = message.try(:html_safe)
end
end
}

关于html - 来自 Controller 的 Flash 消息 : its html-code is displayed as text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31618063/

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