レスポンスに使う”見た目”を作る(ビュー)

〜ここまで、コントローラーにアクションを定義して、コントローラー上で処理を記述できるようにはなった。

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


・ブラウザにレスポンスとして、返す見た目を決めるビュー

・アクションを実行した後に、ブラウザに表示する画面(見た目)を決める。(MVCの役割の1つ:view)

→ブラウザに表示できるのはHTMLファイルのみ。アプリとしては、データを扱って表示させたい。


・データをHTMLでも使用したいときは、rubyを埋め込むことができるERBを使用

ERB:HTMLにrubyの記述を埋め込むことができるテンプレートから、HTMLファイルを生成できるテンプレートエンジン(embedded ruby)
最終的にレスポンスに含めて返す。

・"アクション名".html.erbで作成。erbの記法を用いることで、rubyのコードを埋め込むことができる。
app/views/posts/index.html.erb

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

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

postコントローラーのindexアクションで、インスタンス変数を定義した
→ views/postsディレクトリの、index.html.erbで、そのインスタンス変数を用いることができる。

(一般的には、インスタンス変数内に、データベースから取得したデータが代入される)

・<%= %>でHTMLに埋め込むコード
・<%  %>でHTMLに埋め込むが、表示はされないコード

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

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

2020/09/16

次の記事(モデル)

______________________

Ruby on Railsにおけるビュー:コントローラーの処理後に実行される「HTMLなどのレスポンスをブラウザに表示する」機能。
・・・Action Viewという仕組みを搭載しているから。

ビューファイルは〇〇.html.erbという拡張子を持つ。
・・・テンプレートエンジンであるERBを利用することを意味し、このERBはAction Viewという仕組みに含まれている。

・Action View

ビューの機能を実現するために必要な処理のオブジェクトのこと。
ビューファイルを1つにまとめてブラウザに表示する処理は、Action Viewによって実現されている。

>>ビューの仕組み
app/viewsディレクトリの中にコントローラー名と同じディレクトリを作成し、その配下にビューファイルを設置する。
これにより、コントローラーとビューファイルを関連付けることができ、その関連付けされたビューファイルと「レイアウト」や「部分テンプレート」が組み合わさってブラウザへ表示される。

・・・ビューファイルの内容がAction Viewによってまとめられ、ブラウザに返却される。
・・・コントローラーで取得した@tweetsは、Ruby on Railsの裏側で定義される複数のメソッドを経て読み替えられ、Action Viewへ渡される。そして再度ビューファイルのインスタンス変数としてセットされ、使用できる。

______________________

・ヘルパーメソッドの仕組み

ヘルパーメソッドは、文字列としてHTMLの要素が戻り値となる。

すでに用意されているヘルパーメソッド以外に、ヘルパーメソッドを自作することもできる。
ビューファイルにおいて直接Rubyの記述を書くことはできるが、DRYの視点から見ても綺麗なコードではない。

・・・Ruby on Railsでは、Helperと呼ばれるものを使用し、ヘルパーメソッドを自作できる。

・モジュール
Rubyにおける「インスタンスを生成できないクラス」のようなもの。

module Sample           # module モジュール名
  class Test            # モジュールの中にはクラスを定義できる
  end
end

具体的なオブジェクトを生成したい場合(インスタンスを生成したい場合)はクラスを使用。
処理だけ(メソッドなど)が必要な場合はモジュールを使用する。

モジュールの中にクラスを定義することで、Testクラスが複数ある場合に、クラスごとに区別ができる。

module Sample1
  class Test
  end
end

module Sample2
  class Test
  end
end


Sample1::Test          # Testクラスの呼び出しかた
Sample2::Test

・Helper

ヘルパーメソッドを作成できるモジュール。app/helpers配下に用意されている。
application_helper.rbや、各コントローラーに対応したhelperのファイルに処理を記述することで、ヘルパーメソッドとして使用できる。

module ApplicationHelper     # 〇〇Helperという形で定義

 def sample                  # sampleというヘルパーメソッド
 end

end

ApplicationHelper内へ、メソッドとして定義すると、ビューファイルで使用できる。

<%= sample %>

2020/11/08

この記事が気に入ったらサポートをしてみませんか?