在Rails 2中,:as选项改变的是实际的path:
#路由配置
map.resources :posts, :as => :articles
执行
rake routes
输出如下:
posts GET /articles(.:format) {:controller=>"posts", :action=>"index"}
POST /articles(.:format) {:controller=>"posts", :action=>"create"}
new_post GET /articles/new(.:format) {:controller=>"posts", :action=>"new"}
edit_post GET /articles/:id/edit(.:format) {:controller=>"posts", :action=>"edit"}
post GET /articles/:id(.:format) {:controller=>"posts", :action=>"show"}
PUT /articles/:id(.:format) {:controller=>"posts", :action=>"update"}
DELETE /articles/:id(.:format) {:controller=>"posts", :action=>"destroy"}
/:controller/:action/:id
/:controller/:action/:id(.:format)
在Rails 3中
#路由配置
resources :posts, :as => :articles
执行 rake routes 则输出
articles GET /posts(.:format) {:action=>"index", :controller=>"posts"}
POST /posts(.:format) {:action=>"create", :controller=>"posts"}
new_article GET /posts/new(.:format) {:action=>"new", :controller=>"posts"}
edit_article GET /posts/:id/edit(.:format) {:action=>"edit", :controller=>"posts"}
article GET /posts/:id(.:format) {:action=>"show", :controller=>"posts"}
PUT /posts/:id(.:format) {:action=>"update", :controller=>"posts"}
DELETE /posts/:id(.:format) {:action=>"destroy", :controller=>"posts"}
Rails 3中如果想要达到与上边Rails 2相同的效果,则要在routes.rb中这样配置
resources :articles, :controller => :posts
再试一下,发现已经达到想要的效果了