我使用下面的路由設置時遇到奇怪的輸出:多態性網址奇異資源
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。
這是順便說一下:)