LoginSignup
2
0

More than 3 years have passed since last update.

Rails ビューファイルのHTMLにRubyのコードを書く時の<% %>と<%= %>の違い

Last updated at Posted at 2019-11-12

目的

  • あんまりわかっていないビューファイル(HTML)内にRubyのコードを書く時の<% %>と<%= %>の違いをまとめる

簡単に言うと?

  • ビューファイルが司るWebページ(以降、Webページと記載する)内に表示したいものは<%= %>の中に記載する。
  • Webページに表示したくないものは<% %>の中に記載する。

ちょっとだけ詳しく言うと?

  • <%= %>は中に書かれた内容を実行し、結果を評価し、文字として出する。
  • <% %>は中に書かれた内容を実行する。

使い分けは?

  • あまり難しい事は考えず、ビューファイルに記載するRubyのメソッドやコードの結果をそのWebページに表示したいのか、表示したくないのかで判断する。
  • 例えば、とあるテーブル情報をモデル名.allで取得し、each文で取得内容を全て出力したいときの変数名A.each do |変数名B|の処理はWebページに出力する必要はないので<% %>で囲む。
  • 前述の処理で変数Bに入った内容をWebページに出力したいときは<%= %>で囲む。

書き方の例

  • 変数Aにはとあるデータベースのとあるデータが格納されているものとする。
  • 変数Bの内容をWebページに出力したい。
  • each文を使用した書き方の例を下記に記載する。

    <!-- 下記の処理は出力したくないので<% %>で囲む --> 
    <% each.変数A do |変数B| %>
    
      <!-- 変数Bを出力したいので<%= %>で囲む -->
      <%= 変数B %>
    
    <!-- each文の終了を意味するendも出力したくないので<% %>で囲む -->
    <% end %>
    

より具体的な例

  • usersにはuserテーブルのすべてのデータが格納されているものとする。(users = User.allを実行した状態)
  • userの内容をWebページに出力したい。
  • each文を使用した書き方の例を下記に記載する。

    <!-- 下記の処理は出力したくないので<% %>で囲む --> 
    <% each.users do |user| %>
    
      <!-- userを出力したいので<%= %>で囲む -->
      <%= user %>
    
    <!-- each文の終了を意味するendも出力したくないので<% %>で囲む -->
    <% end %>
    
2
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
2
0