Rails 2.0・その1(RESTful なコントローラのメソッド追加)
いわゆる GET や PUT だけではなく、PUT や DELETE なども使って DB のデータの操作をしたりできます。(らしい)
それをするには、config/routes.rb の2行目(ActionController::Routing::Routes.draw do |map| の次の行)に
と書きます。
そうすると、HTTP の GET POST PUT DELETE 各メソッドで http://localhost:3000/books にアクセスするだけで、Books コントローラのいろんなメソッドに自動的に振り分けてくれます。
rake routes
コマンドを実行して、実際に確かめてみてくださいね。
それに満足できずに、Books メソッドにもっと自分のカスタムメソッドを付け加えたいの、という人は config/routes.rb に
と書いてみましょう。そうすると、
[Rails 2.0.2]
にPOSTでアクセスすると、Books コントローラの method1 メソッドに振り分けられる、というわけでした。
rails 1.2.3 では URL がちょっと違っていて
[Rails 1.2.3]
だったわけでした。
この自動的に付け加えられるメソッドについて、詳しくはこちらやこちらを。
PUT や DELETE を実装しているブラウザが少ないため、実際は
を含む form を POST で送信してあげます。ですです。
【広告】
それをするには、config/routes.rb の2行目(ActionController::Routing::Routes.draw do |map| の次の行)に
map.resources :books
と書きます。
そうすると、HTTP の GET POST PUT DELETE 各メソッドで http://localhost:3000/books にアクセスするだけで、Books コントローラのいろんなメソッドに自動的に振り分けてくれます。
rake routes
コマンドを実行して、実際に確かめてみてくださいね。
それに満足できずに、Books メソッドにもっと自分のカスタムメソッドを付け加えたいの、という人は config/routes.rb に
map.resources :books, :member => {:method1 => :post}
と書いてみましょう。そうすると、
[Rails 2.0.2]
http://localhost:3000/books/1/method1
にPOSTでアクセスすると、Books コントローラの method1 メソッドに振り分けられる、というわけでした。
rails 1.2.3 では URL がちょっと違っていて
[Rails 1.2.3]
http://localhost:3000/books/1;method1
だったわけでした。
この自動的に付け加えられるメソッドについて、詳しくはこちらやこちらを。
PUT や DELETE を実装しているブラウザが少ないため、実際は
<input type="hidden" name="_method" value="delete">
を含む form を POST で送信してあげます。ですです。
【広告】