0

createもともと、ThingsController のアクションに対応する form_for(@thing) がありました。出来た。次に、フォームを通常の場所に移動することにしましたが、/things/new.html.erbフォームのレンダリングが停止しました。このエラーが発生しました:

undefined method `model_name' for NilClass:Class

だから私はアクションに追加@thing = Thing.newしました、そしてすべてがうまくいきました. ただし、フォームが別のコントローラーのビューの別の場所にある場合、newインスタンス化する必要はありませんでした。@thing

Rails が、ある場所ではインスタンス化を要求し、別の場所ではインスタンス化を要求しないという一見恣意的な決定を下すのはなぜだろうか。誰でも Rails-heads に答えがありますか?

4

1 に答える 1

1

を使用しform_for(:thing)ます。インスタンス変数名 @thing を検出しますが、それが nil の場合でも機能します。

于 2012-12-29T18:10:58.763 に答える