form_for(@model)不需要实例化@ model - 或者它吗?

时间:2012-12-29 07:20:17

标签: ruby-on-rails ruby-on-rails-3.2

最初我有一个form_for(@thing)对应于我的ThingsController中的create动作。有效。然后,我决定将表单移动到通常的位置/things/new.html.erb,表单停止渲染。它给出了这个错误:

undefined method `model_name' for NilClass:Class

所以我在@thing = Thing.new行动中添加了new,一切都很顺利。但请注意 - 当表单位于另一个控制器视图中的其他位置时,我不必实例化@thing

这让我想知道为什么Rails做出看似随意的决定,要求在一个地方而不是另一个地方进行实例化。任何Rails-heads都有答案?

1 个答案:

答案 0 :(得分:1)

使用form_for(:thing)。如果它是nil,它将检测一个实例变量名称@thing仍然有效。