如何防止我的 HTML 标签被转义?

How do I prevent my HTML tags from getting escaped?

我正在使用 Rails 4.2.3。我的 app/helpers/admin_helper.rb 文件中有这个……

module AdminHelper

  def menu_builder(page_id)
    tabs = ['Current Objects','Add New Object','Approve Objects']
    content = ""
    tabs.each do |tab|
      content << if page_id == tab
        content_tag('li', content_tag('a', tab, :href => nil ), :class => 'current') + " "
      else
        content_tag('li', content_tag('a', tab, :href => "/#{tab}" )) + " "
      end
    end
    content
  end

end

但在我看来,当我调用方法时

<h1>Admin#index</h1>
<ul>
    <%= menu_builder(@page_id) %>
</ul>

HTML 被转义,而不是仅仅呈现为标签。也就是说,当我查看源代码时,这就是我在页面上看到的……

<ul>

&lt;li&gt;&lt;a href=&quot;/Current Objects&quot;&gt;Current Objects&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;/Add New Object&quot;&gt;Add New Object&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;/Approve Objects&quot;&gt;Approve Objects&lt;/a&gt;&lt;/li&gt; 

</ul>

我需要做什么才能正确呈现我的页面?

更改 menu_builder 辅助方法,使其 returns content.html_safe 而不是 content.

html_safe 方法将字符串标记为可以安全地插入 HTML 而无需执行转义。