最初我有一个form_for(@thing)对应于我的ThingsController中的create
动作。有效。然后,我决定将表单移动到通常的位置/things/new.html.erb
,表单停止渲染。它给出了这个错误:
undefined method `model_name' for NilClass:Class
所以我在@thing = Thing.new
行动中添加了new
,一切都很顺利。但请注意 - 当表单位于另一个控制器视图中的其他位置时,我不必实例化@thing
。
这让我想知道为什么Rails做出看似随意的决定,要求在一个地方而不是另一个地方进行实例化。任何Rails-heads都有答案?
答案 0 :(得分:1)
使用form_for(:thing)
。如果它是nil,它将检测一个实例变量名称@thing仍然有效。