railsでハマった - Routing Error No route matches

Rails3.2でscaffoldしてデータを表示してみたら、以下のようなエラーが出た。

Routing Error

No route matches {:action=>”show”, :controller=>”pitchers”, :id=>#}

Try running rake routes for more information on available routes.

うーん。

action=>”index”にアクセスしているつもりなのになぜかaction=>”show”にアクセスしてしまっているらしい。 config/routes.rbを何度見返しても原因がわからない。

困ったときのGoogle先生 なになに・・・

> 
since you have chosen a different pk than the rails default ('id'), you will need to tell your model to 	use that instead.

class Person < ActiveRecord::Base

  set_primary_key "pid"

end

主キーを’id’以外の値にしているとエラーになるので、モデルにどれが主キーか設定する必要があるぜよ。

ということらしい。確かにこの修正をしたら直った・・・ railsの自動化の内容をちゃんと把握していないと、どこに問題があるかわかりにくいな・・・

railsはバージョンによって挙動が違うらしい。 googleで探している最中、どのバージョンかわからないブログが多くて困った。 バージョンを記載してくれないと、使える情報なのかどうかがよくわからない。

Written on November 9, 2012