RESTfulインタフェースと非RESTfulインタフェース
resources :books
これで、リクエストURLが直接、booksテーブルの操作につながる(RESTful)わけですが、カスタムな操作を加えたいときは、これがちょっと邪魔です。
例えば、addnumアクションを呼び出したくて、
/books/addnum
というリクエストをしても、
/books/:id
とみなされます。RESTfulインタフェースとして、/books/:id はshowアクションを呼び出します。
従って、
/books/show/addnum
という呼び出しに解釈されています。
気持ち悪いなー、と思ってたんですが、resources ルート定義しなきゃよいのですね。
resources ルート定義をやめて
match '/books/addnum
あるいは
match ':controller(/:action(/:id(.:format)))'
として、全ての操作を許容すればよいみたいです。
上の方法だと、アクション一個ずつ定義しなくちゃいけなくて少し面倒。
下の方法は、やりすぎな気がする。
どちらがよく使われるのだろう?