今日のありえないさん
nantara_controller.rbにて
def foo_bar_list @foo = Foo.find(params[:id]) @bar = @foo.bars.find(:all, .................... end
親fooとそれにぶら下がる子レコードbarのリストを表示させるごくごく平凡なメソッドの筈がviewでnil.objectって怒られまくり。
typoを疑うも、tyopはなし。片っ端からコメントアウトしていったら、全部をコメントアウトする羽目に。debug(@foo)とかしても、中身は空っぽ。
ではではと渡されてるparams[:id]を見てみるとこれまたからっぽ。log/development.rb見ると、idはちゃんと前アクションから渡されてる。けどfoo_bar_listではうんともすんともいわず、session[:user]の為のSQLが投げられているだけで、メソッド内のfindとかのsqlは一切出ず。
うー、よくわからなくなってきたと、とりあえずraise params[:id].inspectとか片っ端からraiseかけてやると思ったら、まったくraiseが引っかからない。あれれ、foo_bar_listメソッド内が全く機能してないよ・・・という所ではたと気づきました。で、おもむろにnantara_controller.rbのコードをじっくり見ると・・・・
def foo_bar_list ................ end def bar_edit .............. end def bar_create ............... end ............................ def foo_bar_list end
foo_bar_listが二つ、しかも、中身空っぽのやつが・・。昨日作業してて、「よし、明日はfoo_bar_listを作ろう。とりあえずdef 〜 endだけ用意しておこうっと。」と自分でやったことをすっかり忘れて、別の位置に新たにfoo_bar_listを書いてしまったのでした。原因特定時に自分の記憶力の無さと、あまりのまぬけぶりに愕然としてしまいました。恥ずかしすぎ。