所以我有这个字符串:
"<p> Here it is: </p> <p> <a href="http://localhost:3000/" class="button">Open</a> </p>"
此字符串在控制器内部生成,具体取决于多个参数。
我希望能够在视图中显示此字符串,解释为标记文本:
<div class="row">
<div class="twelve columns panel">
<%= @string_with_markup %>
</div>
</div>
但结果是,毫不奇怪,字符串会按原样显示,因此它会在呈现的页面中显示一堆标记文本。 我虽然使用了render_to_string或yield方法,但它不起作用,我想我错过了一些东西。
其他信息:
整个目的是显示系统发送的电子邮件的正文。 电子邮件是使用ActionMailer生成的,当用户想要查看发送给他的电子邮件时,控制器会调用ActionMailer的相应方法,并提取电子邮件的正文。我所谈到的string_with_markup实际上是类:Mail :: Body
谢谢!
答案 0 :(得分:1)
试试这个:
<div class="row">
<div class="twelve columns panel">
<%= @string_with_markup.html_safe %>
</div>
</div>
答案 1 :(得分:1)
您可以在控制器(或帮助程序)中将此字符串(html)标记为安全:
@string_with_markup = '<p>Here it is ...</p>'.html_safe
使用以下方式渲染:
<%= @string_with_markup %>
如果您不希望在控制器中将此字符串标记为安全,请使用raw
或<%==
而不是在视图中调用html_safe
:
<%= raw @string_with_markup %>
相当于:
<%== @string_with_markup %>
请参阅http://guides.rubyonrails.org/v3.2.9/active_support_core_extensions.html#output-safety