0

tag属性を持つモデルがありますtitle (string)

関連を持つtagモデルへの属します。documenthas_many :throught

document#show ビューでは、そのドキュメントに関連付けられているすべてのタグを表示する必要があるため、次のようにします。

%p= raw @document.tags.map{|t| link_to t.title.prepend('#'), t}.join(', ')

ユーザーがタグを作成できることを考えると、これは安全ですか?

安全でない場合、どうすれば同じ結果を得ることができますか?

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

4

3 に答える 3

0

一般に、すべてのロジック(または可能な限り)はヘルパーまたはモデルに移動する必要があります。これが「安全」または「安全ではない」とは言いませんが、一般的にはそうすることをお勧めします。

于 2012-06-30T17:01:02.403 に答える
0

この場合、 はlink_toその引数を回避するので安全ですが、リスクを冒す理由 (おそらくブロックの内部は数か月で変更されるなど...) を使用しますsafe_join:

%p= safe_join @document.tags.map{|t| link_to t.title.prepend('#'), t}, ', '

または、私の「宝石」を使用しrails_joinてください。joinraw

于 2012-06-30T23:46:29.017 に答える
0

はい、タグのタイトルはリンクのコンテンツになる前にエスケープされるため、HTML が含まれていたとしても、そのままでは出力されずにレンダリングされます。ここでエスケープせずに出力joinれるのは、 の結果の文字列です。これで問題ありません。

于 2012-06-30T17:05:28.293 に答える