在Rails 2.X中,我们有:
map.resources :posts, :controller => 'posts', :as => 'articles'
这实质上为我们的帖子路由创建了一个别名。例如,这会将“domain.com/articles/”发送到posts控制器索引操作。
但是,在Rails3中,:as选项的行为方式不同。例如:
resources :posts, :controller => 'posts', :as => 'articles'
设置命名路由而不是别名,并转到“domain.com/articles/”会出错:
No route matches {:controller=>"posts"}
我如何获得旧的(Rails 2):使用new(Rails 3)api的行为?
PS:请不要告诉我只是重命名我的控制器。那对我来说不是一个选择。
答案 0 :(得分:0)
从粗略阅读关于路由的RoR指南,我想您可能需要尝试:
resources :articles, :controller => "posts"
(http://guides.rubyonrails.org/routing.html#specifying-a-controller-to-use)
您可能还需要添加:as => "articles"
,但由于您要添加:articles
资源,因此可能已经设置了该命名助手。
答案 1 :(得分:0)
您可以使用path
选项完成相同的操作:
resources :posts, :path => '/articles/'
现在举例来说,/posts/new
变为/articles/new
。