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

时间:2016-05-15 14:39:33

标签: ruby-on-rails ruby-on-rails-4 html-escape-characters

我正在使用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>

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

1 个答案:

答案 0 :(得分:3)

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

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