Railsによるurlの描き方

3,702 views
3,567 views

Published on

#sendagayarb #12で使用した。railsにおけるURLの定義方法に関する資料です。

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,702
On SlideShare
0
From Embeds
0
Number of Embeds
39
Actions
Shares
0
Downloads
15
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Railsによるurlの描き方

  1. 1. RailsによるURLの描き方 fukajun@sendagaya.rb
  2. 2. 誰?○ Jun Fukaya○ twitter : fukajun○ minami.rb 出身○ sendagaya.rb - 毎週 月曜日 コンセプト : 毎週の勉強会を楽しみにすることで        毎日の仕事やプライベートを楽しくする○ RubyOnRails, BorneShell, Javascript, C#, PostgreSQL, MongoDB
  3. 3. 今日は何をやるの?RailsでのURLの定義する方法 ↓ config/routes.rb
  4. 4. config/routes.rbの役割・URLを認識させる ♥・URLとControllerのActionを結びつける  /books/57648 → books#show・パラメータの定義  /maps/:latitude,:longitude 
  5. 5. URLとは?ネットワーク上のリソースを一意に指し示すものリソースとは? ・レコード一件 ・インスタンス ・ユーザーのアカウント1件  Railsが取り扱うデータを一意に指し表すもの
  6. 6. routes.rbでURLを作成する URL( = リソース) に対して HTTPメソッド( = 行う操作)を決める 行う操作:どのcontrollerのaction紐付けるかを決める。
  7. 7. HTTPメソッドの役割(get, post)リソースの取得, 参照 GET /users ミルミルー get :users, :to => "users#index" 1 2 3 users/リソースの作成, 追加 POST /users  ? post :users, :to => "users#create" 追加 1 2 3 users/
  8. 8. HTTPメソッドの役割(put, delete) 身長: 171cm, 体重: 60kgリソースの変更 更新 1 2 3 4 PUT /users/:id users/ put users/:id, :to => users#updateリソースの削除 DELETE /users/:id delete users/:id, :to => users#destroy 削除 1 2 3 4 users/
  9. 9. CRUDなURLを一括で定義(resources)GET /users users#indexGET /users/new users#newPOST /users users#createGET /users/:id users#showGET /users/:id/edit editPUT /users/:id updateDELETE /users/:id destroy resources :users
  10. 10. resourcesにURLを追加したいGET /users/friend resources :users do get :friend, :on => :collection endGET /entries/:id/preview resources :users do get :preview, :on => :member end
  11. 11. resourcesで定義したURLを限定するGET /users users#indexGET /users/new users#new # 不要POST /users users#createGET /users/:id users#showGET /users/:id/edit edit    # 不要PUT /users/:id updateDELETE /users/:id destroyresources :users, :only => [:index, :create, :update, :destroy]ORresources :users, :except => [:new, :edit]
  12. 12. 1つのリソースに対してCRUDなURLを一括で定義(resource)GET /profile/new newPOST /profile createGET /profile/ showGET /profile/edit editPUT /profile updateDELETE /profile destroy resource :profile, :controller => :users
  13. 13. リソースが持っている持っているリソースへのURLを定義したいGET /posts/:post_id/commentsPOST /posts/:post_id/commentsGET /posts/:post_id/comments/newGET /posts/:post_id/comments/:id/editGET /posts/:post_id/comments/:idPUT /posts/:post_id/comments/:idDELETE /posts/:post_id/comments/:idresources :posts do resources :commentsend
  14. 14. URLにprefixを付けたい場合URL : /admin/productsnamespace :admin do resource :setting, :except => [:delete]endapp/controllers/admin/products_controller
  15. 15. URLにprefixを付けたい場合URL : /api/productsscope /api do resource :setting, :except => [:delete]endapp/controllers/products_controller       ↑      api/ディレクトリが無くても良い
  16. 16. まとめ● get, post, put, deleteの役割を意識する● resources, resourceを使うと便利● 従属関係にあるものは、resourcesネスト● prefixをつけるときは、namespace, scope
  17. 17. 忘れてたGET /root :to => "backet#index"
  18. 18. 参考資料● Rails3のroutesまとめhttp://irohiroki.com/2010/08/29/rails3-routes

×