はじめに
業務でビューを書いてるときに文字列が出力されず2時間悩んだ結果<%
と書いており=
が抜けていたのが原因だった。
悔しい。
二度と忘れないためにerbの主なタグを以下にまとめた。
怒りに任せて<%
<%=
以外のタグもまとめた。
1. <%=
: 出力付きのERBタグ
<%=
タグは、Rubyコードを実行し、その結果をHTMLに出力します。
例:
<%= "Hello, Rails!" %>
上記のコードは、以下のように出力されます:
Hello, Rails!
2. <%: 出力なしのERBタグ
<% タグはRubyコードを実行するだけで、結果をHTMLに出力しません。主に制御構文 (if, loopなど) で使用されます。
例:
<% name = "Rails" %>
<%= "Hello, #{name}!" %>
Hello, Rails!
例:
<% if logged_in? %>
<p><%= "Hello, #{current_user.name}!" %></p>
<% else %>
<p>Welcome, Guest!</p>
<% end %>
3. コメント: <%#
ERB内でのコメントは <%#
を使用します。このタグ内のコードやテキストは実行されず、出力もされません。
例:
<%#= "This will not be shown or executed" %>
4. HTMLをエスケープしない出力: <%= raw ... %>
または <%= ... .html_safe %>
デフォルトでは <%= はHTMLをエスケープしますが、エスケープせずに出力したい場合には raw メソッドか .html_safe メソッドを使用します。
例:
<%= raw "<strong>Bold Text</strong>" %>
<%= "<strong>Bold Text</strong>".html_safe %>
<strong>Bold Text</strong>
5. 配列やハッシュのループ: <% ... .each do |variable| %>
配列やハッシュの各要素をループして処理する場合には .each
メソッドとともにこのタグを使用します。
例:
<% @users.each do |user| %>
<p><%= user.name %></p>
<% end %>
6. 条件文: <% if ... %>
, <% elsif ... %>
, <% else %>
条件に基づいて特定の部分を表示する場合には、条件分岐を行います。
例:
<% if @user.admin? %>
<p>Welcome, admin!</p>
<% else %>
<p>Welcome, user!</p>
<% end %>
7. ケース文: <% case ... %>
複数の条件に基づいて処理を分岐させる場合には、ケース文を使用します。
例:
<% case @user.role %>
<% when "admin" %>
<p>Admin rights</p>
<% when "user" %>
<p>User rights</p>
<% else %>
<p>No rights</p>
<% end %>
8. 安全な結合: <%= [var1, var2].join.html_safe %>
文字列の結合を行い、その結果をHTMLとして扱う場合には、.join メソッドと .html_safe メソッドを組み合わせて使用します。
例:
<%= ["<strong>", @user.name, "</strong>"].join.html_safe %>