【问题标题】:Routing with polymorphic resources in Rails 3在 Rails 3 中使用多态资源进行路由
【发布时间】:2011-04-05 07:24:52
【问题描述】:

我有一个像这样的多态脚本类:

Script
  belongs_to :scriptable, :polymorphic => true
  ...
end

project 和 testCase 是包含这个类的。脚本也有回形针并且是可版本化的,所以基本上,我已经有一个现有的脚本路线:

resources :test_cases do
  resources :script do
    resources :script_versions
  end
end

该路线以前存在,但我们应用程序的一个新功能是使项目也可编写脚本。这是否意味着我必须为这样的项目添加相同的路线:

resources :projects do
  resources :script do
    resources :script_versions
  end
end

如果我们将来有其他可编写脚本的类会怎样?我每次都必须创建这样的路线吗?它看起来很干净,但对我来说似乎并不干燥。多态性应该在这里帮助我,不是吗?有声明路由的多态方式吗?

【问题讨论】:

  • 我正在寻找相同问题的答案。我想到的一件事是多态路由可能想要“反转”,即 /scripts/:id/:parent_model。正在努力。如果我弄清楚了,我会发布答案。
  • 你解决过这个问题吗?我有一个类似的问题,但找不到 DRY 方法。
  • 还没有。如果您需要,我们可以提供赏金。目前我还没有处于重构模式,但希望在几周内会出现

标签: ruby-on-rails-3 routes polymorphism


【解决方案1】:

您可以像这样将多个名称传递给resources

resources :test_cases, :projects do
  resources :script do
    resources :script_versions
  end
end

【讨论】:

    【解决方案2】:

    你可以这样做:

    [:test_cases, :projects].each do |resource|
        resources resource do
            resources :script do
                resources :script_versions
            end
        end
    end
    

    也许不是超级优雅,但至少它是干燥的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-20
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      • 2012-06-11
      • 2015-08-11
      • 1970-01-01
      相关资源
      最近更新 更多