はじめに
Ruby on Railsでは、<%= %>と<% %>は埋め込みRuby(ERB)テンプレート内でRubyコードをHTMLに組み込むためのものです。
<%= %>と<% %>の違いは
1. <%= %>(出力ありのERB):
<%= %>は、Rubyコードを評価し、その結果をHTML出力する場合に使います。これは戻り値のあるメソッドと考えることができます。
例: <%= @user.name %> は、@userインスタンス変数の名前を出力します。
2. <% %>(出力なしのERB):
<% %>は、Rubyコードを評価して結果を直接HTML出力せず実行したい場合に使います。 戻り値のないメソッド(void) だと考えればいいでしょう。
例: <% if @user.admin? %> 管理者 <% end %> は、ユーザーが管理者の場合にのみ「管理者」というテキストを表示します。
form_tag
下記コードを見てください。form_tagは一見 戻り値のないメソッド(void) に見えて、 <% %>を使うべきだと思うかもしれませんが、実際form_tagメソッドは<form>タグを出力するので、<%= %>を使います。
new.html.erb
<%= form_tag("/posts/create") do %>
<textarea name="content"><%= @post.content %></textarea>
<input type="submit" value="投稿">
<% end %>
まとめ
このように、<%= %>と<% %>の使い分けがRuby on RailsのテンプレートでのHTML生成と出力管理に役立ちます。