【发布时间】:2011-07-27 07:36:18
【问题描述】:
当用户尝试访问他们的个人资料页面时,我的应用似乎随机抛出 "undefined method 'address_line_1' for nil:NilClass" 错误。
奇怪的是它说错误发生在一个完全不相关的布局视图中,我看不到任何迹象表明布局甚至被调用(因为它与编辑视图无关)。
GET peoplecontacter.heroku.com/pages/5/edit dyno=web.1 queue=0 wait=0ms service=20ms bytes=934
2011-03-31T15:19:47-07:00 app[web.1]:
2011-03-31T15:19:47-07:00 app[web.1]: ActionView::Template::Error (undefined method `address_line_1' for nil:NilClass):
2011-03-31T15:19:47-07:00 app[web.1]: 44: #{@page_content.address_line_1}
2011-03-31T15:19:47-07:00 app[web.1]: app/views/layouts/pages/page_splitheader.html.haml:44:in `_app_views_layouts_pages_page__splitheaderhtml_haml___1138718096_23705833586020_0'
无论我从前面的customer_account 视图单击帐户,还是刚刚单击页面的显示视图并点击浏览器的后退按钮,返回到编辑视图,有时都会引发错误。但是我没有在节目中得到错误,这是@page_content.address_line_1应该执行的唯一地方。
提前感谢您的帮助! --马克
【问题讨论】:
-
我们必须看一些代码。可以肯定的是,在某些情况下您会得到意外的 nil,这可能是由于错误处理不足。能否请您添加相关代码sn-ps?
-
当然,但我什至不知道从哪里开始了解您需要查看的内容。
-
这是我在页面控制器中的编辑操作:def edit @page = Page.find(params[:id]) @page_contents = PageContent.list_by_language(@page.id) end
-
您的 nil 错误在于 @page_content 对吗?哪个对象有 address_line_1 方法?我想是@page_content。如果是这样,添加初始化它的代码,如果需要,包括控制器和模型。
-
这是PageContent模型中的方法:def self.list_by_language(page_id) find_all_by_page_id(page_id) end
标签: ruby-on-rails heroku actionview