AWDwR "Chapter17 Action View"
11月中に読み終わらなかったよ。ってこれだけサボってちゃなぁ…。しかもChapter17は46ページもあるし…。
奥さんAction Viewですよ。
Templates
テンプレートはデフォルトではapp/views/[コントローラ名]/[アクション名+拡張子]になるんだけど、以下のように直接指定することもできる。
render(:action => 'action_name') render(:template => 'controller/name') render(:file => 'dir/template')
コントローラのインスタンス変数はテンプレートからアクセスできるし、headers, params, request, response, sessionといったアクセッサも利用できる。またコントローラオブジェクト自体はcontrollerという変数にセットされる。
Builder Template
ビルダテンプレートはXMLを生成するテンプレート。拡張子は.rxml。
RHTML Templates
html_escape()でテンプレート内で出力する文字列をエスケープできて、h()と省略できる。<%=とタイプしたらすぐにh(とタイプする癖をつけましょう。
他にsanitize()というメソッドがあって、これは<form>タグ、<script>タグをエスケープし、on=という属性とjavascript:で始まるリンクを削除してくれる。
Helpers
ビューを助けるメソッドを定義したモジュールがヘルパ。コントローラがBlogControllerという名前ならヘルパモジュールの名前はBlogHelperとなる。でもgenerate controllerを実行するとヘルパも自動的に作ってくれるからあまり気にしなくてもOK。
module StoreHelper def page_title ... end end <h3><%= page_title %></h3>
全てのビューから利用できるヘルパはapplication_helper.rbに定義する。また以下のようにして使用するヘルパをコントローラ内で指定することも可能。
class ParticularController < ApplicationController helper :date_format end class ParticularController < ApplicationController helper DateFormat end
今日は短めで。