• ベストアンサー

textareaの改行の仕方について

文字変数noteには<br>を含むのですが、 下記のプログラムを実行すると<br>がそのままテキストエリアの中に 表示されます。<br>を\r\nや\nに変換しても、それらがそのまま表示されます。 note変数の<br>の箇所で改行してやるには、<br>をどの文字と置換すればいいのでしょうか? print %Q{<textarea rows="5" cols="100" name="title2">#{note}</textarea>}

質問者が選んだベストアンサー

  • ベストアンサー
  • taseki
  • ベストアンサー率66% (155/233)
回答No.2

note.gsub!(/<br>/,'\n') ではなく note.gsub!(/<br>/,"\n") としてみてください。 メタ文字の展開は二重引用符です。 また、 > p noteで確認すると aaa<br>bbb が aaa\\nbbb となっていました。 pメソッドはオブジェクトの内容を確認するためのもので、おそらく文字列自体は、実際は「aaa\nbbb」だと思います。 このような場合はprintを使ったほうがいいとおもいます。

apache6
質問者

お礼

お礼が遅れて申し訳ありません。 二重引用符を利用すると、問題なく動作しました。 ありがとうございました。

その他の回答 (1)

  • taseki
  • ベストアンサー率66% (155/233)
回答No.1

環境などが解りませんが、HTMLのtextarea内での改行は、\nなど、つまりそのまま改行コードを出力すればOKです。 つまり、以下のように出力されれば改行されます。 <textarea>1行目 2行目</textarea> > \r\nや\nに変換しても、それらがそのまま表示されます どこかでエスケープされているのでは。

apache6
質問者

補足

環境はruby1.8.2です。 確かに note.gsub!(/<br>/,'\n') のあと、 p noteで確認すると aaa<br>bbb が aaa\\nbbb となっていました。 gsubは勝手にエスケープされるのでしょうか? 対処法があれば教えてください。

関連するQ&A

専門家に質問してみよう