区别:作为Rails 2和Rails3路由中的选项?

时间:2010-11-15 20:28:45

标签: ruby-on-rails routing

在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:请不要告诉我只是重命名我的控制器。那对我来说不是一个选择。

2 个答案:

答案 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