と、と

INDEX PAGE


<% %>と<% -%>、<%= %>と<%=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 %>を使う!!
ということで。




INDEX PAGE