我还没有找到不涉及非常hacky的解决方案。
问题:我们的 rails 应用程序使用命名空间来覆盖父控制器和模型的行为(使用 STI)。在博客命名法中,它有点像这样:
blog
posts
admin
blog <- blog
posts <- blog::posts
orders <- blog::posts
namespace2
blog <- blog
posts <- blog::posts
comments <- blog::posts
awesome_comments <- blog::posts
这是一个更简单的示例,但是每个命名空间都覆盖了验证、行为以及它的子对象是什么 STI 对象。父级使用反射为用户提供与其拥有的子级对应的按钮。这需要使用 polymorphic_url,但是 rails 有一种非常有趣的方式来处理共享命名空间的嵌套资源
它喜欢这样:namespace/blog/:id/namespace/posts,我想它可以工作......如果你想要一个巨大的 url。
我试过了
scope :module => :namespace, :name_prefix => :namespace do
resources :blog do
resources :post
resources :comment
end
end
但是...... polymorphic_path 似乎没有得到这个......它想要:
namespace :namespace
resources :blog do
namespace :namespace
resources :comment
resources :post
end
end
end
这不仅不是 DRY,而且似乎我做错了什么。
是否有类似 polymorphic_url 的东西尊重范围?