読者です 読者をやめる 読者になる 読者になる

tkymtk's blog

Ruby on Rails及びその周辺について調べたこと。Do whatever you want to do at your own pace.

ActionView概要 - View - RailsGuides v4.0.0 日本語訳

2014/9/25追記:

http://railsguides.jp/action_view_overview.html

の訳がすばらしいのでそちらを見てください。


ActionView概要

このガイドを参照することによって、次のことを知ることができます。

  • Action Viewが何で、Railsでどのように使うか。
  • テンプレートとパーシャル、そしてレイアウトを最も良く用いる方法。
  • どんなヘルパーがAction Viewによって提供され、どのように自分でつくるか。
  • localized viewsを使う方法
  • Railsの外でどのようにAction Viewを使うか。

1 Action Viewとは何たるか?

Action View と Action Controller は Action Packを成す2つの主なコンポーネントです。 Railsでは、webリクエストはAction Packによって処理されます。 Action Packはコントローラーのパート(ロジックを遂行する)と、 ビューのパート(テンプレートをレンダリングする)の2つに仕事を分けます。 大概、Action Controllerはデータベースとのコミュニケーションと関わっていて、必要な時にはCRUD アクションの処理を行います。そしてAction View はそのレスポンスをコンパイルする役目を担っています。

Action View テンプレートは、HTMLと混ぜて、タグの中に埋め込みRubyを使って書かれています。 テンプレートと定型コード(boilerplate code)が雑然としないように、かなりの数のヘルパークラスがあり、 フォーム、日付、文字列の良くある振る舞いが予め用意されています。 アプリケーションの進化に合わせ、独自のヘルパ—クラスを追加することも簡単にできます。

注意:
いくつかのAction Viewの機能はAction Recordに結びつけられています。しかし、それはAction ViewがActive Recordに 依存しているということを意味するわけではありません。Action Viewは独立したパッケージで、 どんな種類のRubyライブラリとでも一緒に使うことができます。

Action Packについて:アクションパック- リクエストからレスポンスまで

2 RailsでAction Viewを使う。

それぞれのコントローラーはapp/viewディレクトリ内に関連付けられたディレクトリを持ち, ディレクトリはそのコントローラーのビューを作成するためのテンプレートファイルを持ちます。 それらのファイルはそれぞれのコントローラーアクションから生じるビューを表示するのに使われます。

それでは、scaffoldジェネレーターを用いて新しいリソースを作成したとき、デフォルトでは Railsは何をするのか見てみましょう。

$ rails generate scaffold post
      [...]
      invoke  scaffold_controller
      create    app/controllers/posts_controller.rb
      invoke    erb
      create      app/views/posts
      create      app/views/posts/index.html.erb
      create      app/views/posts/edit.html.erb
      create      app/views/posts/show.html.erb
      create      app/views/posts/new.html.erb
      create      app/views/posts/_form.html.erb
      [...]

Railsのビューには命名規約があります。上に見るように、大概、ビューは関連したコントローラーのアクション名と同じ 名前を持ちます。例えば、posts_controller.rbのindexコントローラーアクションはapp/views/posts内で index.html.erb というビューファイルを使います。クライエントに戻される完全なHTMLは、

  • このERBファイル
  • それを包むレイアウトテンプレート
  • ビューが参照するすべてのパーシャル

を組み合わせたものから成ります。 この後、ガイドではそれら3つの構成要素について詳しく見ていきます。

間違いがあれば、ご指摘下さると幸いです。