0

最初我有一个 form_for(@thing) 对应create于我的 ThingsController 中的操作。有效。然后,我决定将表单移动到它通常的位置,/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,但如果它为零,它仍然可以工作。

于 2012-12-29T18:10:58.763 回答