我还没有找到一个不涉及非常黑客的解决方案。
问题:我们的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, 我想这可以工作......如果你想要一个巨大的网址。
我试过
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这样的东西尊重范围?