\ nをに変換するRailsyの方法はあり<br>
ますか?
現在、私は次のようにしています:
mystring.gsub(/\n/, '<br>')
\ nをに変換するRailsyの方法はあり<br>
ますか?
現在、私は次のようにしています:
mystring.gsub(/\n/, '<br>')
回答:
はい、レールはsimple_format
あなたが探しているものを正確に実行し、段落タグも追加するので少し優れています。見る
http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format
例:
simple_format(mystring)
simple_format
基本的なHTMLタグを許可するだけでなくsanitize
、すべてのスクリプトを削除するテキストも渡すため、ユーザー入力に対して安全である必要があることに注意してください。
simple_format
提供されたテキストは自動的に<p>
タグで囲まれ、この機能は回避できないことに注意してください。
javascript:alert(\no!\)
リファレンスに記載されているような特別な構文を解釈するRailsに依存しています。悪意のあるハッカーが使用する無限のバリエーションと将来のバリエーションが存在する可能性があります。
wrapper_tag
、変更することができますオプション<p>
何か他のタグ
次のようにすることで、より一般的にすることができます。
mystring.gsub(/(?:\n\r?|\r\n?)/, '<br>')
このようにして、DOS、* NIX、Mac、および偶発的な無効な行末をカバーします。
simple_format
その正規表現で分割できるのと同じようなことをしたい場合は、を使用map
して開始p
タグと終了タグで文字列をラップし、それらを結合します。 mystring.split(/(?:\n\r?|\r\n?)/).map {|s| "<p>#{s}</p>"}.join
私はそれをテストしませんでしたが、それをすべきです。
<%= sanitize(planning.benefits.split(/(?:\n\r?|\r\n?)/).map {|x| "<li class='collection-item'>#{x}</li>"}.join) %>
。そしてそれは魅力的なブーフーのように機能します!
mystring
、任意のHTMLが含まれる可能性があります。
ユーザー入力を処理するときは、これに注意する必要があります。タグを
simple_format
挿入し<br>
ますが、他のhtmlタグを許可します!
simple_formatを使用<b>Hello</b>
すると、「Hello」としてレンダリングされますが、これは望ましくない場合があります。
代わりに<%= h(c.text).gsub("\n", "<br>").html_safe %>
h()
、まずhtmlをエンコードし、gsub
改行を置き換えhtml_safe
て<br>
タグを表示できるようにします。
これにより、ユーザーが入力した内容が正確に表示されます。コメントなどでhtmlについて議論することもできます。
simple_format
は基本的なHTMLタグを許可しますが、テキストもを通過させることに注意してくださいsanitize
。これにより、悪意のある可能性のあるものはすべて削除されます。 apidock.com/rails/ActionView/Helpers/TextHelper/simple_format
いいえ。あなたが持っているものは、一般的に使用される代替手段です。ほとんどの人が使用する定義は次のとおりです。
def nl2br text
text.gsub(/\n/, '<br/>')
end
同じ名前でPHP関数の機能を模倣しているため、このような名前が付けられています。
mystring.gsub(/\r\n|\r|\n/, '\n')
私のために働いた