0

"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

助けてくれてありがとう! - マーク

4

2 に答える 2

0

find_allがページを返さない場合、nil値を返します。あなたはそれをチェックしていないようです。したがって、nilが返されると、nilメソッドエラーが発生します。

プログラムでそのようなケースを処理し、ユーザーにエラーを提示するか、それが発生した場合は何らかの処理を行う必要があります。

于 2011-03-31T23:15:50.553 に答える
0

OK、完全にランダムで、問題の原因はまだわかりませんが、編集アクションのレイアウトを明示的に設定して、指定したレイアウトを使用する代わりに、デフォルトのレイアウトを使用するように修正しましたアクションを表示します。別のコントローラーから来るとき、またはショーページから編集ページに戻るときに、ショーページだけに使用している動的レイアウトを使用しようとする理由がわかりません。

私の Pages コントローラーの上部には、次のようなものがあります: before_filter :load_page, :only => :show def load_page @page = Page.get_page(params) self.class.layout(@page.template) end動的レイアウトをアクションに割り当てる正しい方法ですが、(私が考える)ハッキーなソリューションを使用しないと機能しないため、おそらくそうではありません...

于 2011-04-02T14:44:30.137 に答える