首页 > 代码库 > rails路由
rails路由
web敏捷开发 p317
depot > ruby script/console
>>rs = ActionController::Routing::routes
可以简单测试
比如
>>puts rs.routes
>>rs.recognize_path "/store"
>>rs.generate :controller => "store",id => 123
connect 定义路由规则
url_for 可以生成url,但只能在控制器里使用
具名路由
map.index "blog/", :controller => "blog" , :action => "index"
这样就可以使用index_url就可以得到http://pragprog.com/blog
如果使用index_path就可以得到/blog,即没有协议、主机地址、端口
有根路由
在不同子域下访问相同的内容
http://megablogworld.com/dava/blog
http://megablogworld.com/wen/blog
http://megablogworld.com/wang/blog
dava、wen、wang是不同的应用程序实例
设置RAILS_RELATIVE_URL_ROOT
资源
map.resources :articles
比如文章目录是一组资源,一篇文章是一项资源
post get put delete是不同的http请求
depot > rake routes可以查看资源映射的路由
可以看到7个action index new edit...
:collection 一组资源 get /articles/recent
:member 一项资源 put /articles/1/embargo
:new 新建资源 post /aritcles/new/shortform
嵌套资源
文章的评论是嵌套在文章下的资源
map.resources :articles do |article|
article.resources :comments
# ...
end
浅路由嵌套
format
html请求对应html
xml请求对应xml
map.connect ‘:controller/:action/:id.:format‘
class ProductsController < ApplicationController
# GET /products
# GET /products.xml
def index
@products = Product.find(:all)
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @products }
end
end
路由测试
assert_generates(path, options , defaults={}, extras={}, message=nil)
这些只是摘要,具体看书吧