2012-03-14 8 views
4

は、私がしたい文字列です:とto_sentenceとhtml_safeは一緒ですか?ここ

<%= @pugs.collect {|p| link_to(p.name, pug_path(p))}.to_sentence %> 

は残念ながら出力をエンコード取得されています:

&lt;a href=&quot;/pugs/1-baxter&quot;&gt;Baxter&lt;/a&gt; and &lt;a href=&quot;/pugs/2-sofia&quot;&gt;Sofia&lt;/a&gt; 

私がしました

<a href="/pugs/1-baxter">Baxter</a> and <a href="/pugs/2-sofia">Sofia</a> 

は、ここで私がいることを出力に使用しているコードですhtml_saferawを使用しようとしましたが、影響がないようです。

答えて

2
<%= @pugs.collect {|p| link_to(p.name, pug_path(p))}.to_sentence.html_safe %> 
+0

。それは動作しません。 – Shpigford

+0

実際に動作します。おそらくそれ以外の何かが間違っているでしょう:) – AMIT

+0

+1これは私のために働く – tokland

1

あなたはスパンでそれをラップし、ヘルパー使用することができます

def content_link_to(name,path=nil,options=nil) 
    content_tag :span do 
     link_to name, path, options 
    end 
    end 

を、次のようにそれを使用する:Railsの5のよう

<%= @pugs.collect {|p| content_link_to(p.name, pug_path(p))}.to_sentence %> 
+0

HTMLの安全なコンテンツを出力するためだけに、これらのリンクの周りに余分なHTMLを追加することは過度のようです。 Railsにエスケープする代わりに実際のHTMLを出力したいだけです。 – Shpigford

2

は、to_sentenceビューヘルパーがあります(これを行うのはArray#to_sentenceとは異なります)。 the docsから

to_sentence(アレイ、オプション= {})
は、最後の要素が コネクタワードによって接合されてコンマで区切られた文に配列を変換します。これは、ActiveSupportの Array#to_sentenceのhtml_safe対応バージョンです。

のようにそれを使用してください:私はすでにそれを試してみました、言ったように<% to_sentence(@pugs.collect {|p| link_to(p.name, pug_path(p))}) %>

関連する問題