現在、ビューに次のコード(jQuery)があり、タイトルに\ n文字が含まれていると、jsが壊れます。
$("#t").html("#{title.html_safe}");
以下は機能しますが、それはややハックだと思います。
$("#t").html("#{title.gsub("\n","")}");
現在、ビューに次のコード(jQuery)があり、タイトルに\ n文字が含まれていると、jsが壊れます。
$("#t").html("#{title.html_safe}");
以下は機能しますが、それはややハックだと思います。
$("#t").html("#{title.gsub("\n","")}");
探しているメソッドはString#chompです。文字列の末尾からキャリッジリターン文字が削除されます。
$("#t").html("#{title.chomp}");
いつものhtml_safe
ように、変数が安全であると完全に確信している場合にのみ使用してくださいtitle
...特にJavascriptファイル内で使用しているためです!自分でやることができなかったので、コード例には含めませんでした。さらに、である可能性のある変数での使用に関しては、 APIdockに関する注記を参照してください。文字列リテラルでのみ使用することをお勧めします。html_safe
nil
編集:
Javascriptで使用する前にエスケープする必要のある引用符が含まれている可能性があるtitle
場合(たとえば'"Winter is Coming", I say'
、JavaScriptに補間する) 、リンク@muで提案されている方法.html(""Winter is Coming", I say");
も使用する必要があります。escape_javascript
$("#t").html("#{j(title.chomp)}");
その場合title = '"Winter is Coming"'
、上記のコードが生成されます。
$("#t").html("\"Winter is Coming\"");
タイトル文字列の途中でキャリッジリターンが発生する可能性もある場合は、それString#gsub
が最適な方法です。
$("#t").html("#{j(title.gsub(/[\n\r]/, " "))}");
の2番目のパラメータにスペースをgsub
入れ'Winter\nis\nComing'
ます。'Winter is Coming'
'WinterisComing'
あなたがハッキーを減らすつもりかどうかはわかりません
それでも新しい行が必要な場合は、simple_format
つまり、$( "#t")。html( "#{simple_format title}");
http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format
それも<p>
タグで包みますが。
あなたは試すことができます:
$("#t").html("#{title.html_safe}".chomp);
以下:
$("#t").html(title.html_safe.chomp);
これにより、末尾の改行が削除されます。
先頭と末尾のスペースを削除する場合は、に置き換えることができchomp
ますstrip
。
テキストの文字列内に改行がある場合、解決策は正しい解決策のようですが、 :gsub
は必要ありません。#{...}
$("#t").html(title.gsub("\n",""));
非常に多くの間違った答え。escape_javascriptを使用します。