スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tag:スポンサー広告 

【Ruby】Rails3でリソース指向なURLを定義するためのルーティング設定

Rails3のルーティングの定義でリソース指向(Restfulともいうのかな)なURLを定義するとき

例えば
一覧表示
GET /item/
アイテムの一覧を取得

詳細表示
GET /item/10/
10番のアイテムへのリクエスト

登録
POST /item/
新規アイテムの登録

編集
PUT /item/10/
10番のアイテムの情報の編集

みたいなリソース指向なURL構成をする時はconfig/routes.rbで


TestApp::Application.routes.draw do
resources :item
end


という定義をするだけで

rake routes

item_index GET /item(.:format) {:action=>"index", :controller=>"item"}
POST /item(.:format) {:action=>"create", :controller=>"item"}
new_item GET /item/new(.:format) {:action=>"new", :controller=>"item"}
edit_item GET /item/:id/edit(.:format) {:action=>"edit", :controller=>"item"}
item GET /item/:id(.:format) {:action=>"show", :controller=>"item"}
PUT /item/:id(.:format) {:action=>"update", :controller=>"item"}
DELETE /item/:id(.:format) {:action=>"destroy", :controller=>"item"}


こんなルーティングを自動でやってくれます。
Railsすばらしい。あとはindexとかcreateとかupdateとかのメソッドを実装するだけですね。

さらに階層構造を表現する場合

例えばアイテムに対してコメントをつけれるみたいなリソースを定義する場合を考えてみます

一覧表示
GET /item/10/comment/
10番のアイテムにつけられたコメントの一覧を取得

詳細表示
GET /item/10/comment/120/
10番のアイテムにつけられた120番のコメントへのリクエスト

登録
POST /item/10/comment/
10番のアイテムに対して新規コメントの投稿

みたいなことをしたい場合

実際の処理を書くのはitem_commentコントローラとして


resources :item do
resources :comment, :controller => 'item_comment'
end


こんな感じでroutes.rbで定義して上げると


item_comment_index GET /item/:item_id/comment(.:format) {:action=>"index", :controller=>"item_comment"}
POST /item/:item_id/comment(.:format) {:action=>"create", :controller=>"item_comment"}
new_item_comment GET /item/:item_id/comment/new(.:format) {:action=>"new", :controller=>"item_comment"}
edit_item_comment GET /item/:item_id/comment/:id/edit(.:format) {:action=>"edit", :controller=>"item_comment"}
item_comment GET /item/:item_id/comment/:id(.:format) {:action=>"show", :controller=>"item_comment"}
PUT /item/:item_id/comment/:id(.:format) {:action=>"update", :controller=>"item_comment"}
DELETE /item/:item_id/comment/:id(.:format) {:action=>"destroy", :controller=>"item_comment"}


こんな感じで/item/:item_id/comment/に対しても同じようにリソース指向なURLでリクエストを受け付けるようなアプリケーションにできます。
何かのデータに対して付加的にデータをひもづけるというのはよくあるパターン(今回の例のようにアイテムに付加してコメントをつけるみたいなパターン)なので覚えておくといいかもしれませんね。
スポンサーサイト
テーマ : プログラミング
ジャンル : コンピュータ

Tag:Ruby  Trackback:0 comment:0 

プロフィール

6rats

Author:6rats
こんにちは、ITベンチャーで働くエンジニアです
主に自分の周りで起きた技術的なことをメモとして書き残して行きます。
Android以外にもRuby/Ruby on RailsやFuelPHPなどなどたまにやります。基本的なスタンスとしては興味があるもしくは必要になったらいろんなことにチャレンジします。
最近はiOSアプリ開発を始めています。

購読
follow us in feedly
個人プロダクト

Androidアプリ

Twitterクライアント

Webアプリケーション

EcPriceWatch(Amazon価格の推移を計測、最安値を知らせるサービス)
Google AdSense
ブログ村
にほんブログ村 IT技術ブログへ
にほんブログ村
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。