Ruby on Railsは、さまざまな「慣習」を用いて、コーディングしなければならない分量を減らす作戦を用いています。
コントローラのメソッド名も、そのなかの一つ。こういう「暗黙のルール」をまとめておいてくれる場所って、ないものですかねえ。まあ、ドキュメントの全部を把握していない段階では、すべてが「暗黙のルール」に見えるわけですけれども。いや、ドキュメントに書かれていれば「明示のルール」なのかな?
それはさておき。
RailsGuidesのRails Routing from the Outside Inによれば、HTTPリクエストの命令とパスによって、コントローラのうち呼び出されるメソッドが決定されるとのことです。ドキュメントの位置からも分かるとおり、これは「ルーティング」に分類されるルールです。リクエストに応じて適切なコントローラのメソッドを呼び出すのですから、確かにルーティングですね。
ただし、これは自動的に設定されるわけではなく、routes.rbで明示的に指定する必要があります。
1 | resources :controller1, :controller2, ... |
なお、resourceではなく、resources(複数形)なので注意してください。単数形の方は、パスの中にIDを含まない(パラメータでIDを指定する)ものになります。複数形の方は、パスの中にIDを指定するものになります。
resourcesで使用されるメソッド名は、次の7つです。
| メソッド名 | 対応するHTTPリクエスト |
|---|---|
| index | GET / パス=/example |
| new | GET / パス=/example/new |
| create | POST / パス=/example |
| show | GET / パス=/example/[ID] |
| edit | GET / パス=/example/[ID]/edit |
| update | PUT / パス=/example/[ID] |
| destroy | DELETE / パス=/example/[ID] |
コントローラでこれらのメソッドすべてを実装する必要はありませんが、特定のHTTPリクエストが送られてきたとき、対応するメソッドが定義されていないとエラー(ページ)が返されます。