将带有标记文本的字符串放在视图中

时间:2013-05-11 18:05:05

标签: ruby-on-rails ruby

所以我有这个字符串:

"<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

谢谢!

2 个答案:

答案 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