スポンサーサイト

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

Rails3 ルーティング ( 基本 )

前回に引き続きルートの話。
今回は基本となるmacthディレクティブについて。
前回のtest_routeプロジェクトを使って説明していく。前回の記事についてはこちら

さて、test_routeプロジェクトを作成直後のルートはこうなっていた。
$ 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"}


前回はresourcesディレクティブを使ってRESTfulルートの追加を行っていたが、
実際は新しいアクションを追加するタイミングでルートの追加を行うことが多いと思う。
この時使うのが、基本となるmatchディレクティブである。

例えば、routesコントローラに:checkというアクションを追加した場合、
:idを含んだURLに対応したルートを追加するためには以下のようにする。(config/routes.rb)
match 'routes/:id/check', :to => 'routes#check'

なお、:toを省略して以下のようにも書ける。
match 'routes/:id/check' => 'routes#check'

追加後のルートを確認。
$ 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"}
/routes/:id/check(.:format) {:controller=>"routes", :action=>"check"}

ルートが追加されているのが確認できる。

しかし、追加したルートにはHTTPメソッドが指定されていない。
GETに指定したい場合以下のようにする。
match 'routes/:id/check' => 'routes#check', :via => 'get'

再度ルートの確認。
$ 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"}
GET /routes/:id/check(.:format) {:controller=>"routes", :action=>"check"}

GETメソッドであることが指定された。

最後に、ルートに名前をつけたい場合は以下のようにする。
match 'routes/:id/check' => 'routes#check', :via => 'get', :as => 'check_route'

$ 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"}
check_route GET /routes/:id/check(.:format) {:controller=>"routes", :action=>"check"}


このようにして、macthディレクティブを使ったルートの追加ができる。


コメントの投稿

非公開コメント

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

yas

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

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

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