Ruby on Rails: ルーティングがうまくいかない。

Railsでルーティングがうまくいかなくてひっかかった話。

環境: Ubuntu11.10, RVM1.13.4, Rails3.2.3

articlsコントローラ内のcategoryアクションを呼び出そうとしたが、うまくいかない。

取りあえず

% rake routes

で確認してみると、

article  GET    /articles/:id(.:format)                 articles#show
         PUT    /articles/:id(.:format)                 articles#update
         DELETE /articles/:id(.:format)                 articles#destroy
root            /                                       articles#index
category GET    /articles/category/:category(.:format)  articles#category

エラーメッセージを読んでみると、どうやら show アクションが id = category で実行されているのが問題らしい。

調べてみると、ルーティング設定は上から行われるようなので、category のルーティング設定を config/routes.rb のもっと上に書いてあげればよかったようだ。