フォームビルダーオブジェクトでひっかかったのでメモ

19日は福岡は姪浜RBCRailsイケテル勉強会。
Railsではフォームを生成するヘルパーが色々あって、混乱したので
まとめようと。

引っかかったのは8行目のコメントの部分。
サンプルとして提示されたソースではここだけ、「f.」があたまに
ついてないから、なんでかなと。

結論は、1番目のパラメタ「:event」をわたすことで、解決してくれる
のだけど、9行目のように書いたが好ましいでしょう。

じゃあ、8行目の記述の仕方は何かというと、AWDR本第2版の455Pに説明が載ってました。
「フォームビルダーなしで呼び出すことのできる代替フォーム」とのこと。
「複数のActiveRecordオブジェクトにマッピングするフォームを構築する場合には
このようなスタイルが必要な場合があります」。確かに。

1:<% form_for :event do |f| %>
2:  <p><b>Title</b><br /><%= f.text_field :title %></p>
3:
4:  <p><b>Date</b><br /><%= f.datetime_select :date %></p>
5:
6:  <p>
7:    <b>Userid</b><br />
8:    <!--<%= collection_select(:event, :user_id, User.find(:all), :id, :login)%>-->
9:    <%= f.collection_select(:user_id, User.find(:all), :id, :login, :prompt => 'select user id')%>
10:  </p>
11:
12:  <p><%= f.submit "Create" %></p>
13:<% end %>

他にも非モデルフィールドとの連携に使われる、「form_tag」やら
Ajaxに対応した「form_remote_tag」、「remote_form_for」等ありますので
読み進めながら、使いながら慣れて行きましょう。