コードの埋め込みと「-(マイナス)」記法

Railsビューのコード埋め込み「<%(=) %>」では「-(マイナス)」を書くことで改行や空白文字の表出を抑制する。

コード実行 表示 前の空白 後の改行
<% ... %> ×
<%= ... %>
<%- ... %> × ×
<% ... -%> × ×
<%- ... -%> × × ×
<%# ... %> × ×

Ruby on Rails入門優しいRailsの育て方」P.156より

ちなみに「<%-= ..」や「<%=- ..」はエラーっぽくなる(後者単項マイナス演算子なら)ので注意。また、「<%-# ..」とか「<%# ... -%>」も謎。

例えば

  <%- if <式> -%>
    何がしか
  <%- end -%>

「-(マイナス)」がないと行頭インデントの空白文字とコード末の後ろの改行が残る。<式>が偽なら if埋め込みの行末改行と end埋め込みの行頭空白はどうせなくなるのでその分の「-(マイナス)」は関係ないとも言える、<式>が偽の時は。<式>が真のときはその行末改行行頭空白ともにでてくるのでやっぱり「-(マイナス)」で抑制した方が良い。

だから、大体のところ if 分岐は「-」で括っとく感じだろうと思う。

なんかどの真偽に伴なってどの行頭空白やら改行文字やらがどうなるか混乱する。
いっそ「-(マイナス)」記法なんか使わないでインデントの空白やら改行やら残ってても気にしないという態度で良いかも、どうせブラウザでみればでてこないのだし。

その日のうちに追記

「<%- end # コメント -%>」は良くない、後ろ一行か数行くらい道ずれに無くしてしまう様だ。