构建一个简单的电话簿应用程序,并有关于以下关注:未定义的方法`号为无:NilClass
我列出的联系人的每个人都有一个号码资源,并定义它们之间的关系在路由文件作为如下:
config/routes.rb
resources :contacts do
resources :numbers
end
在我的webapp到目前为止,我有它,以便用户可以创建一个联系人,然后创建与该联系人对应的数字。我列出了号码的联系人,当用户点击它(以路线编号#显示页面,查看具体的数字,我收到以下错误:
NoMethodError in NumbersController#show
undefined method `numbers' for nil:NilClass
我有这个错误大量的时间,而且总是发生这种情况,因为联系人没有正确实例化,但在我的代码中,根据我的rails控制台探索,所有东西都被正确地保存到数据库下面是抛出错误的代码,在我的数字控制器:
def set_number #to do item
@number = @contact.numbers.find(params[:id])
end
而且传递的参数,根据错误页面,如下:
Parameters:
{"contact_id"=>"1",
"id"=>"1"}
我设置@contact通过该方法中的数字控制器:
def set_contact
@contact = Contact.find(params[:contact_id])
end
和我把它在顶部为这样:
before_action :set_contact
鉴于有参数,和Rails控制台告诉我联系人和号码保存得当,任何想法有什么不对?
可你实际上只是张贴了整个数字控制器以及用户点击该链接的提高了错误? –
你必须在你的'before_action:set_number'之前有你的'before_action:set_contact',否则你在调用':set_number'时''contact'' – dpedoneze
'@number = Number.find(params [:id ])'就足够了,你不必看着'@ contact'找到'number' – lusketeer