Rails 3 中的路由
zhangyuan
13年5月9日星期四
The Purpose of the
Rails Router
• Connecting URLs to Code
• Generating Paths and URLs from Code
13年5月9日星期四
演示
• rake routes
• app.posts_url
• Rails.application.routes.recognize_path('/posts/new')
• 必须已经创建好必要的Controller和Action
• R...
分类
• Resource Routing
• Non-Resourceful Routes
13年5月9日星期四
资源路由
• resources & resource
• :ony & :except
• :path
• :path_names
• member & collection
13年5月9日星期四
方法
• namespace
• scope
• :as
• :module
• ....
• ...
13年5月9日星期四
通用选项
• :as
• :defaults
• :subdomain
• :constraints
• etc.
13年5月9日星期四
子域名
• 完成路由的两个目标
13年5月9日星期四
配置子域名
scope subdomain: 'admin' do
resources :posts
end
scope constraints: {subdomain: 'admin'} do
resources :posts
end
sco...
配置子域名
scope subdomain: 'admin' do
resources :posts
end
> app.posts_url
=> "http://www.example.com/posts"
> Rails.applicati...
配置子域名
scope constraints: {subdomain: 'admin'} do
resources :posts
end
> app.posts_url
=> "http://admin.example.com/posts"
...
配置子域名
scope subdomain: 'admin', constraints: {subdomain: 'admin'} do
resources :posts
end
app.posts_url
=> "http://admin.e...
配置子域名
scope subdomain: 'admin', constraints: {subdomain: /^(admin|
manage)$/ } do
resources :posts
end
app.posts_url
=> "h...
redirect
• 默认为301跳转
13年5月9日星期四
Rails Engine
• mount
13年5月9日星期四
Rspec测试
• rspec/routes/
• spec/routes/posts_routing_spec.rb
13年5月9日星期四
参考资料
• http://guides.rubyonrails.org/routing.html
13年5月9日星期四
Upcoming SlideShare
Loading in …5
×

Rails 3中路由

580 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
580
On SlideShare
0
From Embeds
0
Number of Embeds
66
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Rails 3中路由

  1. 1. Rails 3 中的路由 zhangyuan 13年5月9日星期四
  2. 2. The Purpose of the Rails Router • Connecting URLs to Code • Generating Paths and URLs from Code 13年5月9日星期四
  3. 3. 演示 • rake routes • app.posts_url • Rails.application.routes.recognize_path('/posts/new') • 必须已经创建好必要的Controller和Action • Rails.application.routes.url_helpers.new_post_path 13年5月9日星期四
  4. 4. 分类 • Resource Routing • Non-Resourceful Routes 13年5月9日星期四
  5. 5. 资源路由 • resources & resource • :ony & :except • :path • :path_names • member & collection 13年5月9日星期四
  6. 6. 方法 • namespace • scope • :as • :module • .... • ... 13年5月9日星期四
  7. 7. 通用选项 • :as • :defaults • :subdomain • :constraints • etc. 13年5月9日星期四
  8. 8. 子域名 • 完成路由的两个目标 13年5月9日星期四
  9. 9. 配置子域名 scope subdomain: 'admin' do resources :posts end scope constraints: {subdomain: 'admin'} do resources :posts end scope subdomain: 'admin', constraints: {subdomain: 'admin'} do resources :posts end 13年5月9日星期四
  10. 10. 配置子域名 scope subdomain: 'admin' do resources :posts end > app.posts_url => "http://www.example.com/posts" > Rails.application.routes.recognize_path("http://admin.example.com/posts") => {:action=>"index", :controller=>"posts"} > Rails.application.routes.recognize_path("http://example.com/posts") ActionController::RoutingError: No route matches "http://example.com/posts" > Rails.application.routes.recognize_path("http://somesubdomain.example.com/posts") ActionController::RoutingError: No route matches "http://somesubdomain.example.com/posts" 13年5月9日星期四
  11. 11. 配置子域名 scope constraints: {subdomain: 'admin'} do resources :posts end > app.posts_url => "http://admin.example.com/posts" > Rails.application.routes.recognize_path("http://example.com/posts") => {:subdomain=>"admin", :action=>"index", :controller=>"posts"} > Rails.application.routes.recognize_path("http://www.example.com/posts") => {:subdomain=>"admin", :action=>"index", :controller=>"posts"} > Rails.application.routes.recognize_path("http://admin.example.com/posts") => {:subdomain=>"admin", :action=>"index", :controller=>"posts"} > Rails.application.routes.recognize_path("http://somesubdomain.example.com/posts") => {:subdomain=>"admin", :action=>"index", :controller=>"posts"} 13年5月9日星期四
  12. 12. 配置子域名 scope subdomain: 'admin', constraints: {subdomain: 'admin'} do resources :posts end app.posts_url => "http://admin.example.com/posts" > Rails.application.routes.recognize_path("http://admin.example.com/posts") => {:subdomain=>"admin", :action=>"index", :controller=>"posts"} > Rails.application.routes.recognize_path("http://example.com/posts") ActionController::RoutingError: No route matches "http://example.com/posts" > Rails.application.routes.recognize_path("http://www.example.com/posts") ActionController::RoutingError: No route matches "http://www.example.com/posts" 13年5月9日星期四
  13. 13. 配置子域名 scope subdomain: 'admin', constraints: {subdomain: /^(admin| manage)$/ } do resources :posts end app.posts_url => "http://admin.example.com/posts" > Rails.application.routes.recognize_path("http://admin.example.com/posts") => {:subdomain=>"admin", :action=>"index", :controller=>"posts"} > Rails.application.routes.recognize_path("http://manage.example.com/posts") => {:subdomain=>"admin", :action=>"index", :controller=>"posts"} > Rails.application.routes.recognize_path("http://example.com/posts") ActionController::RoutingError: No route matches "http://example.com/posts" > Rails.application.routes.recognize_path("http://www.example.com/posts") ActionController::RoutingError: No route matches "http://www.example.com/posts" 13年5月9日星期四
  14. 14. redirect • 默认为301跳转 13年5月9日星期四
  15. 15. Rails Engine • mount 13年5月9日星期四
  16. 16. Rspec测试 • rspec/routes/ • spec/routes/posts_routing_spec.rb 13年5月9日星期四
  17. 17. 参考资料 • http://guides.rubyonrails.org/routing.html 13年5月9日星期四

×