Ruby on Rails – コントローラのメソッド

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">