0

RailsTutorial book ( http://ruby.railstutorial.org/chapters/sign-up#sec-signup_form )に従ってください

次のスニペットがあります。

def new
 @user = User.new
end

def create
 @user = User.new(user_params)
 ....
end

ユーザーが /users/new に移動し、def new が呼び出されて @user 変数が初期化された場合、モデルを再作成する必要があるのはなぜですか。create で新しいユーザー モデルを作成する場合、なぜ def new で作成するのでしょうか。

4

2 に答える 2

1

すべてのリクエストがコントローラーの新しいインスタンスを生成するためです。#newインスタンスがあり、別のインスタンスがあり#create、別のヒットが#new別の新しいインスタンスを作成します。これらのコントローラ インスタンスは異なり、インスタンス変数@userも異なります。

于 2013-09-27T04:38:06.510 に答える
1

newモデルをデータベースに保存しません。一時的なインスタンスをインスタンス化するだけです。

そのため、アクション newが を呼び出すとUser.new、値のない一時変数が作成されます。これはビューに渡され、フォームの表示に役立ちます...そして、その一時変数は破棄されます。

フォームの送信ボタンを押すと、フォーム パラメーターがアプリケーションのアクションに送信され、フォームに渡された値を使用して新しいモデルをインスタンス化するためにパラメーターをcreate呼び出します。User.new

create メソッドは通常save、データをデータベースに保存するモデルを呼び出します。

于 2013-09-27T05:21:45.573 に答える