@Satoh_D no blog

大分にUターンしたので記念に。調べたこととか作ったこととか食べたこととか

【Ruby on Rails】ダイアログの改行でハマった

Ruby on Rails案件で早速ハマりました(ヽ´ω`)

前提

Ruby: 2.0.0p647 Ruby on Rails: 4.2.5

ダイアログに改行を入れたい...

alertで出て来るダイアログのメッセージに改行を入れようと、以下のようにコードを書いたのですが、何故かalertの内容が改行されません。 ちゃんとダイアログ内の文言には改行コード(\n)を入れているですが...。

= link_to 'ダイアログ出すよ', [リンク先URL], :data => { :confirm => 'ダイアログだよ!\n二行目だよ!' }

文言を囲むときはダブルクオーテーションのほうが良さげ

調べてみるとGithubに同様の記事がありました。 以下のIssueによると、どうやらシングルクオーテーションで文言を囲った場合は改行コードは変換されないとのことでした。

Interpret newline escape codes in dialog messages? · Issue #388 · rails/jquery-ujs

Issueにもある通り、:confirmの文言をダブルクオーテーションで囲むことで意図したとおりに出力できるようになりました。

= link_to "ダイアログ出すよ", [リンク先URL], :data => { :confirm => "ダイアログだよ!\n二行目だよ!" }

クオーテーションで挙動が異なるとは...。 Ruby on Rails中々面白いけど、難しいですねぇ。

参考になったページ

パーフェクトRuby on Rails

パーフェクトRuby on Rails