【ruby on rails】railsのHTMLヘルパーに悩む

railsでは、HTMLのinputタグ(他にもformタグやaタグ、selectタグ等)を生成するHTMLヘルパーというものがある。
でだ、inputタグを生成するヘルパーにはtext_fieldというのと、text_field_tagという2種類がある。何が違うかと、DBに結びついているフォームか、独自のフォームかで使い方が違ってくる。(という俺様認識)

まず、前者のtext_fieldタグの書式は
text_field オブジェクト名(≒モデル名/テーブル名), メソッド名(≒テーブルのカラム名), オプションと指定する。

例えば、

<%= text_field "log", "title", :size => 80 %>

と指定すると

<input id="log_title" name="log[title]" size="80" type="text" value="" />

に変換される。このとき、logオブジェクトに"ABC"が入っていれば

<input id="log_title" name="log[title]" size="80" type="text" value="ABC" />

となる。


対して、text_fieldタグの書式は
text_field_tag inputタグの名前, inputタグのvalue値, オプション
と指定し、例えば

<%= text_field_tag "title", @log.text, :size => 80 %>

と指定すると

<input id="title" name="title" size="80" type="text" value="※1" />

に変換される。※1の部分は@log.textが保持している値になる。

どちらが使いやすいかは好みによると思うが、nameが両者で異なるから注意が必要。

name="title"の場合、controllerで利用する際には、params[:title]でアクセスできるが、name="log[title]"の場合は、それではアクセスできない。

多分こう? 

params[:log][:title]

(試してないのでよく分からない)

ただ、便利なのは下記のようにいちいち、パラメータを設定せずとも

 @log = Log.new
 @log.title = params[:title]
 @log.text = params[:text]

こんな感じでインスタンス化できるのが便利

@log = Log.new(params[:log])

とりあえず以上を把握するのに、2時間を費やした。
rorは便利なとこが多い分、慣れるまで時間がかかる予感

↓のページにまとめられてた
http://d.hatena.ne.jp/zariganitosh/20070123/1169537414

タグ:[ruby on rails

このログへのコメント(1件)

>多分こう? params[:log][:title] (試してないのでよく分からない)

それで、おk

コメント投稿フォーム

コメント

※半角英数字だけのコメントは投稿できません。

トラックバック

関連ログ