2011-06-12 110 views
1

我有一個雙重嵌套的資源:兩次嵌套資源的form_for問題

resources :companies do 
    resources :orders do 
     resources :comments 
    end 
end 

有問題我試圖包括窗體創建一個評論我的訂單顯示視圖時。這是我試過的:

<%= form_for([@order, @order.comments.build]) do |f| %> 

但是,這給了我一個沒有方法的錯誤。

任何機會,你可以推薦最好的方式來處理這個問題。

回答

3

您必須定義公司。如果你寫rake routes你可以看到你沒有order_comments_path,因爲它的雙重嵌套,所以你會看到像company_order_commments_path這樣的東西至少有兩個參數,一個company_id和一個order_id。所以如果你真的想使用這個3級nester資源,你必須在表單路徑中添加一個@company變量。像:

<%= form_for([@company, @order, @order.comments.build] do |f| %> 

但在大多數情況下,這是沒用的,同時定義companyorder來識別order,所以這可能是更好的其他選擇,增加了對orderscomments單獨另一條路線,這是有道理的。 在你的routes.rb

... 
resources :orders do 
    resources :comments 
end 
... 

所以,你可以操縱orders,不指定company。同樣在最普通的情況下,通過定義3級嵌套路線,您不會獲得任何重要優勢。

+0

太棒了!謝謝Jx – 2011-06-12 20:54:34