【Rails】テンプレート(erb)でRubyコードを使う方法

こんにちは!CodeClub965のKです!

今回はRailsのテンプレート(erbファイル)において、Rubyコードを使って動的処理を行う方法についてまとめようと思います。

基本的に複雑な処理などはアクションに記述しますが、簡単な計算や処理、条件分岐などの処理をテンプレートの中に記述することも可能です。

今回はよく使うであろう以下のものに絞って解説しようと思います。

・<% %>と<%= %>
・繰り返し処理
・条件分岐処理

ちなみにテンプレートでのコメントやコメントアウトの方法は以下の記事にまとめていますので参考にしてください。

<% %>と<%= %>

まずはこのそれぞれの記号の意味を解説します。

<% 任意のコード %>
  囲まれているコードは評価されるだけです。
  結果をテンプレートに返さないので、画面には表示されません。

<%= 任意の式 %>
  式の結果がテンプレートに挿入されます。
  つまり画面に表示されます。

違いとしてはこんな感じです。
一応簡単のコード例を書いておきます。

<% price = 2980 * 0.1 %>
<p>
商品の値段は、<%= price %>円です。
</p>

<% %>のは、計算や繰り返し処理などのRubyコードを記述するときに使い、<%= %>の方は、文字列を出力したい場合に使います。

上の例でも、<% %>で計算をし、その結果を<%= %>で文字列として出力しています。

繰り返し処理

繰り返しの処理をテンプレートに記述する場合は、メソッドを記述することになりますが、例えばよく使うeachメソッドを例に説明します。

ちなみに繰り返し処理の方法はいろいろありますので調べてみてください。
これもいつか記事にしますね。

まず、eachメソッドの基本構文は以下の通りです。

オブジェクト.each do |変数|
  実行する処理
end

これをテンプレートに記述する場合は、

<% arr = ['A', 'B', 'C'] %>
<p>
 <% arr.each do |str| %>
  <%= str %>さん。
 <% end %>
</p>

こんな感じで記述します。
先ほどの、<% %>と<%= %>との組み合わせですね!

条件分岐

条件分岐は「if」を使って記述することができます。

基本構文は以下の通りです。

if 条件式 then 
  実行する処理 
else 
  実行する処理 
end

これをテンプレートで使うと、例えば

<% name = '田中' %>
<p>
 <% if name == '田中' then %>
   この人は、<%= name %>です。
 <% else %>
   この人は田中ではありません。
 <% end %>
</p>

こんな感じでテンプレートに条件式を記述することができます。
こちらもif文と、<% %>、<%= %>の組み合わせですね。

最後に

今回はRailsにおけるテンプレートへのRubyコードの記述方法について解説しました。

<% %>と<%= %>の違いを理解し、基本的なRubyコードの記述方法が分かっていればテンプレートへの記述も難しくはありません。

ぜひアプリケーションなどを作成するときに参考にしてもらえればと思います。

それでは、また!

Follow me!