読者です 読者をやめる 読者になる 読者になる

あれ ERBの -%> が動作しない !?

Ruby

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;)


しばらくしてから、やっと気がつきました -%> の後ろにスペースが入っていたのです !!
リファレンスマニュアルにも 「"-": 行末が-%>のとき改行を出力しない」 と書いてありました!!


ということで、行末のスペースには気を付けましょうね ^^);