1

@products = Product.allコントローラの新しいメソッド内に変数が定義されています。これには、フォームの選択ボックスに表示されるデータベーステーブルの値が含まれています。

createメソッドで検証エラーが発生した場合、呼び出してrender :action => 'new'います。

他のすべての変数は正常に戻っているように見えますが、@productsはnilとして戻ってきます

ここで何が欠けていますか。

4

3 に答える 3

3

render :action => newアクションのビューActionViewレンダリングするように求めています -- ご想像のとおり、現在のコントローラーでアクションを実行しません。newnew

http://guides.rubyonrails.org/layouts_and_rendering.html#using-renderから:

renderwithの使用:actionは、Rails の初心者にとってしばしば混乱の元になります。指定されたアクションはレンダリングするビューを決定するために使用されますが、Rails はコントローラーでそのアクションのコードを実行しません。ビューで必要なインスタンス変数は、 を呼び出す前に現在のアクションで設定する必要がありますrender

于 2012-06-21T03:02:00.207 に答える
1

の代わりにrender :action => :new、 を使用できますredirect_to :action => :new。これにより、すべてのインスタンス変数が正しく読み込まれnew、アクション内のロジック全体をコピーする必要がなくなりますcreate

幸運を!

于 2012-06-21T04:02:17.327 に答える
0

render :action => 'new'ビューをレンダリングするだけで、コントローラーで新しいメソッドを呼び出しません。したがって、新しいメソッドでインスタンス化された変数は、呼び出す直前にインスタンス化する必要がありますrender :action => 'new'

于 2012-06-21T02:58:20.030 に答える