2011-07-16 5 views
0

配列の各要素にリンクを追加し、結果の配列を結合したいと考えています。私が試した:私が構築した文字列がエスケープされたHTMLとして表示されるのはなぜですか?

myarray.collect{|u| link_to u[:first_name], username_path(u[:username])}.join(', ') 

それが返すことを除いてこれは、すべてを正しく行います。

<a href="/niels">Niels Bohr</a>, <a href="/richard">Richard Feynman</a> 

代わり

<a href="/niels">Niels Bohr</a>, <a href="/richard">Richard Feynman</a> 

の私はこの問題を解決するにはどうすればよいですか?あるいは、より簡単な手続きがありますか?

ありがとうございました。

答えて

4

使用html_safe

myarray.collect{|u| link_to u[:first_name], username_path(u[:username])}.join(', ').html_safe 
+0

ありがとうございました。 – alste

1

のリンクを追加したり、リストの要素を結ぶことには何も問題はありません。それはすべて正常に動作します。間違っているのは、あなたの文字列がで安全でないと考えられ、有効なHTML(さらに重要なのはjavascript)を構築するために使用されている文字の一部がエスケープされていることです。

fl00rによれば、文字列の後に .html_safeを追加して、関数内のHTMLをそのままブラウザに安全に送信できることをレンダリング関数に伝える必要があります。

関連する問題