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リクエストが送られてきたとき、対応するメソッドが定義されていないとエラー(ページ)が返されます。