railsの勉強 ビューのフォーム、コントローラの関係
次のようなフォームを含むビューがあったとする。
<%= form_tag :action => 'execute' %> <%= check_box("var", "attr") %>check me, please! <%= submit_tag "execute" %> <%= end_form_tag %>
このビューに関連するコントローラには、executeメソッドがあり、上のチェックボックスの内容は、次のようにしてわかる。
def execute puts params["var"]["attr"] end
「RailsによるアジャイルWebアプリケーション開発」の355ページに以下の記述がある。
>フィールドのヘルパー
Railsには、テキストフィールド(標準、hidden、パスワードおよびテキストエリア)、ラジオボタン、チェックボックスといったヘルパーが統合されています(…)。
どのヘルパーメソッドにも、少なくとも2つのパラメータがあります。1つ目は、インスタンス変数(通常はモデルオブジェクト)の名前です。2つ目は、そのインスタンス変数の属性の名前で、フィールドの値を設定するときのクエリとして使われます。これら2つのパラメータも、HTMLタグの名前を生成します。パラメータには文字列またはシンボルを使用できますが、Railsでは慣用的にシンボルを使います。
コントローラから見た場合、1つ目のパラメータの説明が意味するところがよくわからないが、いずれにしても、ビューからのデータを、params配列から取得する(ほかにやり方がある?)とき、上のように行えばよいらしい。
シンボルを使うことができるのであれば、2つ目のパラメータの説明から、上のビューのコードは次のようにも書けるようだ。
<%= form_tag :action => 'execute' %> <%= check_box(:var, :attr) %>check me, please! <%= submit_tag "execute" %> <%= end_form_tag %>
recipe/app/controller/admin_controller.rbのexecute()メソッドのTODOを見よ。