1
0

erbで=つけ忘れて2時間悩んだから俺は今後絶対に=を忘れない。

Posted at

はじめに

業務でビューを書いてるときに文字列が出力されず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 %>
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0