为一个控制器Rails多个名称空间

时间:2012-08-24 14:09:08

标签: ruby-on-rails ruby namespaces routes

我需要能够将一些路线添加到一个或多个动态路径。

例如paths = [ "foo/news", "bar/news" ]。两者都需要走同样的路线。

应该是这样的:

paths.each do |path|
  namespace path, module: "news" do
    root :to => "welcome#index"
    resources :articles
  end
end

但它给了我一个错误:

rake aborted!
Invalid route name: 'foo/news'

我尝试了很多不同的东西,其中大多数都是在启动服务器时失败了,有些工作但是只为我提供了第一条路径的好路线。

之前有人做过这样的事吗?

我希望能够使用路径,所以当我进入'bar/news'时:

news_article_path( @artice )会给我bar/news/articles/1(而不是foo/news/articles/1

1 个答案:

答案 0 :(得分:0)

问题是你要在循环中添加'/ news'部分。试试这个:

paths = [ "foo", "bar" ]

paths.each do |path|
  namespace path, module: "news" do
    namespace 'news', module: false do
      root :to => "welcome#index"
      resources :articles
    end
  end
end