と、と
<% %>と<% -%>、<%= %>と<%=h %>
Railsをはじめた当初、サンプルソースなどを見ると
<% %> <% -%>
<%= %> <%=h %>
と、色々な書き方があって、何が正しいのか良くわからない状況でした。
一応、それぞれの違いをまとめておきます。
<% %>と<% -%>
ERB又はRHTMLの中で、Rubyのロジックを埋めたい時には<% %>を利用するのが一般的ですが<% %>を使うと、この行の後ろの改行コードがHTMLに残ってしまいます。
<% if @hoge_flg then %>
ホゲ
<% end %>
と、記述したときには、@hoge_flgがTRUEの場合次のようなHTMLが生成されます。
ホゲ
この用に無駄な改行が入ってしまうのを避けるために使うのが<% -%>です。
<% if @hoge_flg then -%>
ホゲ
<% end -%>
と、記述して、@hoge_flgがTRUEの場合次のようなHTMLが生成されます。
ホゲ
というわけで、<% %>よりも<% -%>を利用するほうが正しいようです。
<%= %>と<%=h %>
HTMLに文字を埋め込む時には<%= %>を使いますが
このままだと、クロスサイトスクリプティングを防ぐことが出来ず
これを防ぐために利用するのが<%=h %>となるそうです。
これを利用すると、サニタイジングという
安全な文字列かを行ってくれるようなので
習慣として<%=h %>を使うほうが良いと思います。
結論
<% %>よりも<% -%>を使う!!<%= %>よりも<%=h %>を使う!!
ということで。