Ruby 具有单一资源的多态URL

Ruby 具有单一资源的多态URL,ruby,ruby-on-rails-3,routing,url-routing,polymorphism,Ruby,Ruby On Rails 3,Routing,Url Routing,Polymorphism,使用以下路由设置时,我得到奇怪的输出: resources :warranty_types do resources :decisions end resource :warranty_review, :only => [] do resources :decisions end 我有许多保修类型,但只有一个保修审查(因此是单一的路线声明)。这些决策与这两者都有多态性关联。我只有一个决策控制器和一个_form.html.haml partial来呈现决策表

使用以下路由设置时,我得到奇怪的输出:

  resources :warranty_types do
    resources :decisions
  end
  resource :warranty_review, :only => [] do
    resources :decisions
  end
我有许多保修类型,但只有一个保修审查(因此是单一的路线声明)。这些决策与这两者都有多态性关联。我只有一个决策控制器和一个_form.html.haml partial来呈现决策表单

这是视图代码:

= simple_form_for @decision, :url => [@decision_tree_owner, @decision.becomes(Decision)] do |form|
保修类型url如下所示(对于新决策):

而保修审查url如下所示:

/admin/warranty_review/decisions.1
我认为,因为保修审查id无处可去,它只是作为一个扩展附加到末尾

有人能解释一下这里发生了什么事,我怎样才能解决它吗

我可以通过尝试检测保修审查类并将@decision\u tree\u owner替换为:warranty\u review来解决这个问题,这会生成正确的url,但这很混乱。我本以为路由会足够聪明,能够意识到保修审查是一种独特的资源,因此从URL中丢弃id


顺便说一句,这是Rails 3:)

显然,这是一个长期存在的Rails错误,多态url无法从路由设置中知道资源是否是单一的:

我只是想使用一种非单一的方法,即使只有一次保修审查。这只是一天结束时的美学

/admin/warranty_review/decisions.1