多态性网址奇异资源

问题描述:

我使用下面的路由设置时遇到奇怪的输出:多态性网址奇异资源

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:

https://rails.lighthouseapp.com/projects/8994/tickets/4077-wrong-redirect-after-creation-of-nested-singleton-resource-using-responder

即使只有一个warranty_review,我只会诉诸使用非单一路线。在一天结束时,这只是美学。