あれ ERBの -%> が動作しない !?
ERBを使ってHTMLを生成する場合、HTML内の空行はブラウザーでは表示されないので気になりませんが、メールやコードを生成する場合は空行が気になります。
例えば
require 'erb' template = %! begin <% 3.times do |n| %> # <%= n %> <% end %> end ! ERB.new(template, nil, '-').run
を実行すると
begin # 0 # 1 # 2 end
と表示されます。
そこで、
require 'erb' template = %! begin <% 3.times do |n| -%> # <%= n %> <% end -%> end ! ERB.new(template, nil, '-').run
こう書くと
begin # 0 # 1 # 2 end
と表示されるはずです。 → 参照
ところが、あるコードジェネレータを作った際には -%> を指定したのに空行が発生されます !?
あれこれ色々と試してみましたが、どうにも上手く行きません・・・・
(;_;)
(;。;)
(;O;)
しばらくしてから、やっと気がつきました -%> の後ろにスペースが入っていたのです !!
リファレンスマニュアルにも 「"-": 行末が-%>のとき改行を出力しない」 と書いてありました!!
ということで、行末のスペースには気を付けましょうね ^^);