Ruby on RailsでViewに<input type="text"/>タグを出力する際、
text_field() と text_field_tag() があって、どちらを使えばよいのか分らず暫くキョトーンとしていたのですが、やはりライド・オン・Railsは優れています。最後の「付録 Appendix」のリファレンスに一言で分りやすく記載されていました。
ヘルパメソッドリファレンス(P353, 357)より参照。
■text_field() 達のグループ。
ActionView::Helpers::FormHelper
モデルを対象とするヘルパです。
■text_field_tag() 達のグループ。
ActionView::Helpers::FormTagHelper
モデルオブジェクトではなく、値を対象とするヘルパです。
すなわち、
・前者はテンプレートにアサインされたRailsのモデルオブジェクトとその属性にアクセスできるように、
・後者はHTMLタグの名前と値からアクセスできるように
HTMLタグをレンダリングするということらしい。前者が高レベル、後者が低レベルなAPIとも言えましょうか。
ちなみに、同じくここで知りましたが、tag()、content_tag() というパラメータで渡された名前とハッシュによる属性指定(および、content_tag()の場合はcontent部)によって、どんなタグでも生成できる、ヘルパーも発見。
divの様なタグを<%= %>の中で生成できて、Rubyの変数へのアクセスがし易くなり、コードも見やすくなる効果があるそうだ。
良く考えられている。
例によって、これで1時間近く悩んでいたのであった。そんな訳でコーディングがなかなか進まない。しかし納得したので気持ちは良い。