0

テキスト型のコメント フィールドを含むポートフォリオ モデルがあります。その値は、cr と nl 文字の組み合わせで区切られた一連の段落です。目的は、段落を配列に抽出し、それらを <p> タグでラップし、ブラウザーに出力するために再結合することです。したがって、以下のコードの焦点は 6 行目から 8 行目です。

私が抱えている問題は、 < および > 文字が HTML エンティティ < としてレンダリングされることです。と >.

私は Ruby と Rails に慣れていないので、これが意図したとおりに機能しない理由は、おそらく間違ったアプローチを取っているためだと思います。また、経験豊富な Ruby コーダーがこれにどのように対処するかを知りたいです。みたいな状況。ビューに送信する前に、コンテンツに HTML タグをどのように挿入しますか? それとも、それは常に MVC モデルに違反していますか? その場合、この種の問題を解決する正しい方法は何ですか?

コードは次のとおりです。

1.   module ApplicationHelper
2.   
3.     def portfolio_featured
4.       @portfolios = Portfolio.all
5.       @portfolios.each do |p|
6.         paras = p.comments.split(/\r?\n\r?\n/)
7.         paras.collect! { |p| "<p>" + p + "</p>" }
8.         p.comments = paras.join
9.       end
10.    end
11.
12.  end
4

2 に答える 2

1

simple_format TextHelperを見てください。

それはおそらくあなたが探しているものです。

于 2012-06-12T22:18:41.243 に答える
0

TextHelper#simple_formatまたはBluecloth (Markdown) のような凝ったものを使用できますが、自分でクックしたい場合は、それを記述できます (重要なのはsafe_joinを使用することです):

def portfolio_featured
   safe_join(Portfolio.all.map do |portfolio|
     portfolio.comments.lines.map { |line| content_tag(:p, line.chomp) }
   end)
end
于 2012-06-12T22:20:02.540 に答える