2011-03-11 87 views
3

我使用下面的路由設置時遇到奇怪的輸出:多態性網址奇異資源

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。

這是順便說一下:)

回答