capsctrldays

2006-05-31 (水) [長年日記]

[Rails] フォームの作り方

GettingReal的にはインタフェースファーストなので、静的HTMLを先に作るのはいいんだが、「静的HTMLフォーム」→「Railsヘルパ使用のフォーム」の脳内変換をもっと効率的にできないものか。時間かかりすぎ。誰だRailsなら10倍(ryとか言ったのは。

とりあえずアクション作る。

def new
  @hoge = Hoge.new params[:hoge]
end

def create_confirm
  new
  render :action => 'new'
end

で、new.rhtm を編集していく。new.rhtmlには

<%= debug @hoge %>

を入れておく。

で、ちゃんと入力したものがフォームに戻ってくるまで修正していく(ここができていればupdateも終わったも同然)。ヘルパを使えば間違いなく戻ってくるんだけど、ヘルパで補えない変則的なフォームの部分は自作しなきゃいけないので、ここらへんを注意しとく(これはダルいよねー)。

で、次にvalidationを追加する。

def create_confirm
  new
  @hoge.valid?
  render :action => 'new'
end

今度はvalidationが効いているかどうかチェックする。

<%= error_message_on "hoge", "fuga", "フガ項目" %>

を各フォームに追加していく(これが相当ダルい)。

ああ、error_messages_for は見栄えが悪いので、すでに無かったことにしている(あれがRailsならではな気もするけど)。

昨日書いた「タイプをモデルに入れる」話が生きてくるのは、このvalidationのところで、たとえばgender_typeだったら、

validates_inclusion_of :gender_type, :in => GENDER.keys

とかできてうれしい。

なんかてきとーな文章になった。