Monday, 21 May 2012

RoR new と create アクションをちゃんと繋ぐ

newとcreateに限った話ではないのですが、今回はこの二つが繋がらずにかなりおばかな時間を費やしてしまったので忘備録です。

Railsのscaffoldデフォルトでは、パラメータをメソッドに渡す際に、例えば postというモデルを使用している時、newアクションで

def new
  @post = Post.new
end

としてフォームなどを表示させて、ユーザがフォームに入力をしてsubmitを押すとcreateアクションにpostでフォームのデータを渡します。そこでcreateアクションがデータベースに保存するなどの処理をします。

def create
  @post = Post.new(params[:post])

  respond_to do |format|
    if @post.save

      Do something here...

    end
end

この params([:post]) で newからcreateアクションにフォームのデータを渡しているのですが、私はここをparams[:id]としてしまい、newフォームのデータがcreateアクションに渡らなかったので初歩的なことでずいぶん時間を費やしてしまいました…。他の人はこんなミスはしないのでしょうか…。

No comments:

Post a Comment