多态性网址奇异资源
问题描述:
我使用下面的路由设置时遇到奇怪的输出:多态性网址奇异资源
resources :warranty_types do
resources :decisions
end
resource :warranty_review, :only => [] do
resources :decisions
end
我有很多warranty_types但只有一个warranty_review(因此奇异路径声明)。决策与两者都是多态关联的。我只有一个决策控制器和一个_form.html.haml部分来呈现表单作出决定。
这是视图代码:
= simple_form_for @decision, :url => [@decision_tree_owner, @decision.becomes(Decision)] do |form|
的warranty_type URL看起来像这样(为一个新的决定):
/warranty_types/2/decisions
而warranty_review网址如下:
/admin/warranty_review/decisions.1
我认为,因为warranty_review id没有去哪里,它只是作为一个ext附加到最后ension。
有人可以解释这里发生了什么,以及我可以如何解决它?
我可以通过尝试检测warranty_review类并用@decision_tree_owner替换:warranty_review并生成正确的url,但这很混乱。我会认为路由将足够聪明,以实现warranty_review是一个单一的资源,从而丢弃该URL的ID。
这是顺便说一下:)
答
显然,这是一个长期轨道臭虫polymorphic_url没有办法知道的资源是否是从路由设置单数或不Rails的3:
即使只有一个warranty_review,我只会诉诸使用非单一路线。在一天结束时,这只是美学。