【问题标题】:Unnamespaced routes within namespaced routes命名空间路由中的未命名空间路由
【发布时间】:2012-08-16 20:47:09
【问题描述】:

我在一个应用中有几个命名空间路由。这是一个示例

namespace "battles" do
  resources :teams do
    resources :comments, :module => "comments", :controller=>'comments'
  end
end

我的问题是我所有带有 cmets 的资源都路由到 cmets/cmets 控制器,但是因为 :teams 在战斗命名空间中,所以应用程序尝试路由到战斗/cmets/cmets

有没有办法指定嵌套的评论资源应该路由到 cmets/cmets 控制器,而不是 Battle/cmets/cmets 控制器。

【问题讨论】:

  • 如果您不希望 cmets 在命名空间中,那么为什么不直接将其移出呢?您的 cmets 路线实际上是否嵌套在团队内部? (从你的描述看不像)。
  • 评论都与可评论相关联(在本例中为团队)。我需要知道我在评论一个团队而不是其他东西(所以我所有的评论都有嵌套的评论路线)。我的 cmets 控制器有一个 find_commentable 方法,它查看 URL 的前一部分以确定要加载的模型类型。

标签: ruby-on-rails ruby-on-rails-3 rails-routing


【解决方案1】:

试试

     scope :module => "battles" do  
        resources :teams do
         resources :comments, :module => "comments", :controller=>'comments'   
       end 
    end

【讨论】:

  • 这会导致路线预期在 Battle::Comments 模块中
【解决方案2】:

我放弃了,只是创建了一个 Battle::Comments 控制器。它会导致代码重复,因此并不理想。

【讨论】:

  • 你也可以在你的 Comments 控制器的末尾添加这一行: Battles::CommentsController = CommentsController 也不理想,但比代码重复更好。
猜你喜欢
  • 2018-05-05
  • 1970-01-01
  • 2011-02-16
  • 1970-01-01
  • 2012-01-25
  • 2017-12-13
  • 2015-09-23
  • 2014-04-10
  • 1970-01-01
相关资源
最近更新 更多