15

我有一条flash[:success]消息是这样的:

flash[:success] = "This text is now bold.". 但是,当我将文本设置为粗体时,它只是将 HTML 字符包裹在消息周围,而不是实际变为粗体。

<b>This text is now bold</b>

如何将 HTML 包含到 Flash 消息中?

4

3 回答 3

21

<%= flash[:success].html_safe %>在您的视图中使用。

每当您flash[:success]为空白时,它都会显示错误,因为html_safe. 所以最好使用条件。

因此,请尝试使用以下方法来防止该错误:

<%= flash[:success].html_safe unless flash[:success].blank? %>

您还可以使用.try来防止该错误:

<%= flash[:success].try(:html_safe) %>

如果您确定有内容,您也可以尝试:

<%= raw flash[:success] %>

ERB 特定的 HTML 显示

最重要的是,由于您使用的是 ERB,因此您可以h()对 HTML 转义字符串使用方法:

<%= h flash[:success] %>

查看有关 ERB 的本教程,了解其他选项,例如显示 JSON 或 URL 编码的字符串。

于 2013-07-19T13:33:53.553 回答
3

将消息另存为

flash[:success] = "<b>This text is now bold.</b>"

将 html 文件作为

<div class="notice">
<%=h flash[:notice]%>
</div>
于 2013-07-19T13:18:13.637 回答
2

您可以将任意 HTML 添加到您的 Flash 消息中,但您需要用户html_safe将其呈现为非转义。

flash[:error] = "<em>Crap!</em> We lost everything."

在视图中:

<%= flash[:error].html_safe %>
于 2013-07-19T13:25:05.680 回答