1

私はRails 4.2.3を使用しています。私は HTMLタグがエスケープされないようにするにはどうすればよいですか?

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ではなく、単にタグとしてレンダリングするのにエスケープされています...私のアプリ/ヘルパー/ admin_helper.rbファイルでこれを持っています。つまり、ソースを見ると、私のページに表示されます。

<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

'content'に対して' .html_safe'を呼び出します。 –

+1

「[ruby on railsでhtmlをエスケープしない]」(http://stackoverflow.com/questions/3932267/dont-escape-html-in-ruby-on-rails) –

答えて

3

menu_builderヘルパーメソッドをcontentの代わりにcontent.html_safeを返すように変更します。

html_safeメソッドは、エスケープ処理を行わずにHTMLに挿入するのに安全であるとマークします。

関連する問題