【Ruby on Rails】ビューとは

実行環境

■MacOS
■Visual Studio Code
■Ruby
■Ruby on Rails

ルーティング、コントローラー、モデルについての記事は下記になります。

【Ruby on Rails】ルーティングとは

2021.04.15

【Ruby on Rails】コントローラーとは

2021.04.16

【Ruby on Rails】モデルとは

2021.04.13

 

ビューとは

ビューはMVCの「V」にあたる部分になります。

ブラウザにレスポンスとして返す見た目を設定します。

Webアプリケーションには、処理だけではなくアクションを実行した後に、ブラウザに表示する画面の見た目を決めるビューが必要です。

コントローラーは、アクションを処置した後に、対応するビューに該当するファイルを探して、レスポンスとして返します。

例えば、「トップページを表示して」というリクエストをコントローラーが処理する際、トップページの内容が記載されたビューを探し出す必要があります。

 

ビューの作成

ブラウザに表示できるのは、HTMLファイルだけです。

しかし、Webアプリケーションとしては、データを扱って表示したいので、Rubyを使用したいところです。

データをHTMLでも使用したい時には、Rubyを埋め込むことができるERBという仕組みを使用します。

 

ERB

ERBは、「テンプレートエンジン」と呼ばれる仕組みを持ったものの1つです。

テンプレートエンジンとは、雛形となるテンプレートと、そのテンプレートにデータとなる記述を埋め込むことで、最終的に別のファイルとして生成できる仕組みのことです。

ERBは、HTMLにRubyの記述を埋め込むことができるテンプレートから、HTMLファイルを生成できるテンプレートエンジンです。

ERBは、「Embedded Ruby」の略です。

拡張には、「.erb」を使用します。

 

⚪︎⚪︎.html.erbファイル

RailsにおけるERBファイルは、「⚪︎⚪︎.html.erb」という名前で作成します。

⚪︎⚪︎には、対応するアクション名を記入します。

ビューとしての役割を持つため、「ビューファイル」と呼ばれることがあります。

Railsは、このビューファイルを元にHTMLファイルを書き出して、最終的にレスポンスを含めて返すことでブラウザに画面を表示させます。

 

ビューファイルの作成

例として、postsコントローラーのindexアクションに対するビューファイルを作成していきます。

app/view/postsディレクトリを右クリックし、「index.html.erb」を作成します。

 

ビューファイルの編集

「index.html.erb」内にHTMLを記述していきます。

<h1>トップページ</h1>

ブラウザで再読み込みをします。

サーバーを起動していない場合は、ターミナルで「rails s」を実行します。

上記のように、「index.html.erb」内に書いたものが表示されます。

 

ビューにRubyを記載する

ここからさらに、Rubyの記述を追加していきます。

ビューはコントローラーからの情報を受け取ることができます。

コントローラーのアクション内にインスタンス変数を定義しておくことで、その情報を持つ変数を使用できます。

 

コントローラーでインスタンス変数を定義する

ここでは「@post」というインスタンス変数に、文字列を代入します。

class PostsController < ApplicationController
  def index
    @post = "これはコントローラーで定義したインスタンス変数を確認するための文字列です。"
  end
end

 

ビューファイルを再度編集

上記の記述ができたら、ビューファイルを下記のように編集していきます。

<h1>トップページ</h1>
<%= @post %>

もう一度、ブラウザを再読み込みします。

上記のように「<%= @post %>」と記述を追加するだけで、コントローラーで定義したインスタンス変数内の情報が表示されます。

 

ビューでデータが使える仕組み

コントローラーで定義したインスタンス変数は、対応するビューで用いることができます。

今回の場合では、postsコントローラーのindexアクションでインスタンス変数を定義したので、postsディレクトリの「index.html.erb」でそのインスタンス変数を用いることができます。

今回は、このインスタンス変数には文字列が含まれていますが、一般的な使用例は、コントローラーでデータベースから取得したデータなどを代入します。

 

Rubyコードの埋め込み

ビューファイルでインスタンス変数などのRubyの記述を用いるには、ERBの特殊な記法を用います。

以下のように「<%= %>」というタグでRubyのコードを囲うことで、そのコードの結果を埋め込むことができます。

<%= @post %> # RubyコードをHTMLに埋め込む

もし、画面上に表示をさせなくても良いRuby記法(if文やeach文など)は、「=」を抜いて「<% %>」で囲います。

例えば以下のような表記にすると、インスタンス変数に定義した文字列は表示されなくなります。

<% @post %> # RubyコードをHTMLに埋め込むが表示はされない

 

まとめ

✅ビューとは、レスポンスとして返す見た目の部分のこと(HTMLファイルなどを指す)。

✅ERBとは、Rubyのテンプレートエンジンのこと。

✅テンプレートエンジンとは、HTMLファイルなどの異なるファイルに、Rubyの記法を埋め込むための仕組みのこと。

✅「<%= %>」とは、Rubyのコードを埋め込む際に使用するコードのこと。

 

おすすめ書籍

プログラミング未経験の方向け

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

スラスラ読める Rubyふりがなプログラミング

 

プログラミング初心者向け

Ruby on Rails 6 超入門

たった1日で基本が身に付く! Ruby on Rails 超入門 たった1 日で基本が身に付く!