5

Rails では、HTML コンテンツを含む変数がある場合、それをビュー ファイルにエンコードせずに出力するにはどうすればよいですか?

たとえば、このコードは次のとおりです。

<% my_variable = "<b>Some Bolded Text</b>" %>
<%= my_variable %>

出力:

&lt;b&gt;Some Bolded Text&lt;/b&gt;
4

2 に答える 2

8

Rails 3 ベータ版を使用していますか? Rails 2 はデフォルトで出力を HTML エスケープしません。通常はhヘルパーを使用する必要があります。Nate の投稿を参照してください。Rails 3 を使用している場合は、rawヘルパーを使用するか、文字列を html セーフとして設定する必要があります。例

<% my_variable = "<b>Some Bolded Text</b>" %>
<%= raw my_variable %>

または

<% my_variable = "<b>Some Bolded Text</b>".html_safe %>
<%= my_variable %>   

Rails のバージョンを確認し、ご連絡ください。

于 2010-03-30T02:26:45.230 に答える
0

ActionView::Helpers::TextHelperは、タグをエスケープするだけでなく、タグを完全に削除するメソッド strip_tags を提供します。

ソース[参照]:

 def strip_tags(html)     
    return html if html.blank?
    if html.index("<")
      text = ""
      tokenizer = HTML::Tokenizer.new(html)
      while token = tokenizer.next
        node = HTML::Node.parse(nil, 0, 0, token, false)
        # result is only the content of any Text nodes
        text << node.to_s if node.class == HTML::Text  
      end
      # strip any comments, and if they have a newline at the end (ie. line with
      # only a comment) strip that too
      text.gsub(/<!--(.*?)-->[\n]?/m, "") 
    else
      html # already plain text
    end 
  end

<%= strip_tags(my_variable) %>
于 2010-03-30T02:12:18.153 に答える