始めに
Rails 技術者認定資格を受験するにあたって今回は試験内容であるActionViewの項目をRailsチュートリアルを中心に自分なりにまとめていきたいと思います。ActionViewという言葉は聞いたことがありますが、実際にどの部分がActionViewであるのかも含めて今回は調べていきます。
ActionViewとは
RailsにおけるWebリクエストはActionControllerとActionViewで扱われます。ActionViewはActionControllerがデータベース処理やCRUD(Create/Read/Update/Delete)アクションを実行したレスポンスをwebページに反映する役割になります。ActionViewはテンプレートとしてデフォルトではERBを使用してビューコードを書くことが出来ます。またgemを組み合わせればERBだけでなく、Slimテンプレートを使用することが出来たりします。
あと自分が実際にActionViewという言葉をよく見かけていたのが、ビューファイルでの入力フォームをスッキリ書けるようにサポートしてくれるtext_field、datetime_selectメソッドなどのフォームヘルパーです。また文字列や日付にもヘルパーが提供されていて、ビューを現在のロケールによって、言語や日時などのローカライズを簡単に行うことが出来ます。またこれらのヘルパーは自分のアプリケーションに応じて機能拡大して独自のヘルパーを作成出来ます。
テンプレート、パーシャル、テンプレート
ActionViewが提供してくれるビューファイルの要素として、テンプレート、パーシャル、レイアウトがあり、ビューファイルはこれら3つの要素から成り立ちます。
テンプレート....ERBやSlimなどのテンプレートエンジンを利用してビューファイルの中にRubyコードでロジックを埋め込むことが出来ます。テンプレートの種類は拡張子で判断され、.erbや.slimの拡張子でRailsでどのテンプレートを使用しているかを表しています。
パーシャル....ビューファイルが肥大化するのを防ぐためにビューを部分的に分割して、複数のビューファイルで使い回すことも出来ます。よくある例としてはヘッダーやフッター、フォームなどをパーシャルとして分割したりします。またパーシャルファイル名はform.html.erbのように一文字目をにすることでパーシャルとして認識され、他のビューファイル内で以下のように記述して呼び出すことが出来ます。
<%= render "form" %>
レイアウト....複数のページで共有のデフォルトデザインを表現するための仕組みで、同じようなデザインの大枠を使い回すことが出来ます。デフォルトではapplicationビューファイルがテンプレートになりますが、applicationをテンプレートとして使いたくない場合は、変更したいページのコントローラー内の上部で、以下のように指定します。
layout 'admin_page'
最後に
以上が大まかにはなりますが、ActionViewの全体的な役割になります。実際にはActionViewのフォームヘルパーを使う機会が多いはずですので、業務でよく使用している主要なフォームヘルパーの紹介などを、また別の記事で紹介したいと思います。