Rails中的Whiny Nils

时间:2009-06-15 13:29:18

标签: ruby-on-rails ruby

所以我在rails中生成我的脚手架,它创建了通常的CRUD文件。在我的视图中,我复制了new.html.erb中的表单并将其粘贴到index.html.erb,因此我可以从索引创建一个新记录。当我这样做时,无论我做什么,我都会始终如一地得到以下错误。

Called id for nil, which would mistakenly be 4 -- if you really wanted
the id of nil, use object_id

我厌倦了在网上寻找答案,只是学会了它被称为whiny nil(没什么帮助)。我尝试重命名我的实例变量,大写,使用全局变量等,但Rails没有错误文档库令人沮丧。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:6)

您的控制器中是否存在所有必需的对象?看起来它正在调用something.id,但索引操作中不存在某些内容。查看整个错误消息 - 它应该说是导致它的行,然后检查源文件中该行是否缺少变量。

答案 1 :(得分:2)

在你的控制器中,你需要将new中找到的代码添加到索引中(我想它类似于@model = Model.new)。或者更好:创建一个名为expose_new或类似名称的私有方法,将公共代码移到那里并添加before_filter :expose_new, :only => [:index, :new]

只是旁注......

如果我是你,我会在你的表单中使用new,并在index和new中进行渲染(如果它们都相同则很可能编辑),所以你不需要复制粘贴它英寸

所以,你最终会得到一个包含表单的_form.html.erb,而在new和index中,你有<%= render('form') %>