Rails 3で'_path_path'というundefined methodエラー
ものすごい小ネタ。結論からいうとタイポだったのだけど、
ActionView::Template::Error (undefined method `new_entry_path_path' for #<#<Class:...
というエラーが出たので、'_path_path'ってなんだ?と思い、rake routesを見ても変なところないhelperに追加もしてないし、なんだろうなーと思っていたら、
<%= link_to '新規投稿', new_entry_path %>
と書くべきところを、
<%= link_to '新規投稿', :new_entry_path %>
とタイポしていた。エディタならシンボルの色が違うので、すぐに気付いた気もするけど、ログは白黒だったので、ね(言い訳)。
で、もしやと思って、シンボルのまま"_path"を削ってみた。
<%= link_to '新規投稿', :new_entry %>
おお、動く!
rake routes見ると、
new_entry GET /entries/new(.:format) {:action=>"new", :controller=>"entries"}
となっているので、ヘルパーメソッド形式で"_path"を付けるか、シンボルで書けばいいらしい。ということは、文字列でも動くのか?と思い、
<%= link_to '新規投稿', 'new_entry' %>
とやっても動いた。これが黒魔術ってやつなのかな。