スポンサーサイト

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

Rails3 ルーティング ( resources )

Rails3で仕様が変わったルーティングについてメモ程度に書いておく。
今回はRailsの定番、resourcesディレクティブについて。

まずはプロジェクトを作成。
$ rails new test_route
$ cd test_route

ルーティングの確認のためscaffoldを使って適当にアプリケーションを作る。
$ rails g scaffold Route test:string


現在のルーティングを確認する。
$ rake routes
(in /Users/yas/NetBeansProjects/test_route)
routes GET /routes(.:format) {:action=>"index", :controller=>"routes"}
POST /routes(.:format) {:action=>"create", :controller=>"routes"}
new_route GET /routes/new(.:format) {:action=>"new", :controller=>"routes"}
edit_route GET /routes/:id/edit(.:format) {:action=>"edit", :controller=>"routes"}
route GET /routes/:id(.:format) {:action=>"show", :controller=>"routes"}
PUT /routes/:id(.:format) {:action=>"update", :controller=>"routes"}
DELETE /routes/:id(.:format) {:action=>"destroy", :controller=>"routes"}


この時のソースを確認。
config/routes.rbを見てみると、たった一行の記述であることがわかる。
resources :routes
これはresourcesディレクティブであり、
上記のようにRESTfulルートと呼ばれる一連のルートを生成する。これによりアプリケーションは標準的なCRUD操作にアクセスできるのである。

試しにconfig/routes.rbに以下を追加してみる。
resources :routes
resources :tests

ルートの確認をすると、以下のようになる。
$ rake routes
(in /Users/yas/NetBeansProjects/test_route)
routes GET /routes(.:format) {:action=>"index", :controller=>"routes"}
POST /routes(.:format) {:action=>"create", :controller=>"routes"}
new_route GET /routes/new(.:format) {:action=>"new", :controller=>"routes"}
edit_route GET /routes/:id/edit(.:format) {:action=>"edit", :controller=>"routes"}
route GET /routes/:id(.:format) {:action=>"show", :controller=>"routes"}
PUT /routes/:id(.:format) {:action=>"update", :controller=>"routes"}
DELETE /routes/:id(.:format) {:action=>"destroy", :controller=>"routes"}
tests GET /tests(.:format) {:action=>"index", :controller=>"tests"}
POST /tests(.:format) {:action=>"create", :controller=>"tests"}
new_test GET /tests/new(.:format) {:action=>"new", :controller=>"tests"}
edit_test GET /tests/:id/edit(.:format) {:action=>"edit", :controller=>"tests"}
test GET /tests/:id(.:format) {:action=>"show", :controller=>"tests"}
PUT /tests/:id(.:format) {:action=>"update", :controller=>"tests"}
DELETE /tests/:id(.:format) {:action=>"destroy", :controller=>"tests"}


もちろんこのままではコントローラーが無いためアプリケーションとしては動作はしないが、
ルートの追加が簡単にできるので便利。

ちなみに、上の例はこのように書いても良い。
resources :routes, :tests

また、CRUD操作のうち生成するルートの制限を加えることも可能で、
その場合は:only:exceptといったオプションを使う。
例えば、showのみルート生成したい場合は、
resources :tests, :only => 'show'
のようにすると、以下のようにshowのルートのみが生成される。
$ rake routes
(in /Users/yas/NetBeansProjects/test_route)
routes GET /routes(.:format) {:action=>"index", :controller=>"routes"}
POST /routes(.:format) {:action=>"create", :controller=>"routes"}
new_route GET /routes/new(.:format) {:action=>"new", :controller=>"routes"}
edit_route GET /routes/:id/edit(.:format) {:action=>"edit", :controller=>"routes"}
route GET /routes/:id(.:format) {:action=>"show", :controller=>"routes"}
PUT /routes/:id(.:format) {:action=>"update", :controller=>"routes"}
DELETE /routes/:id(.:format) {:action=>"destroy", :controller=>"routes"}
test GET /tests/:id(.:format) {:action=>"show", :controller=>"tests"}
こんな感じ。


フェイスブック 若き天才の野望 (5億人をつなぐソーシャルネットワークはこう生まれた)


検索フォーム
プロフィール

yas

Author:yas
yasと申します。
RailsにてWebアプリケーション開発をしております。

【開発環境】
OS: Mac OSX 10.6
Ruby: 1.9
Rails: 3.0
IDE: NetBeans6.9

最新記事
カテゴリ
月別アーカイブ
RSSリンクの表示
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。