2011-07-21 74 views
3

嵌套資源銷燬行爲適當的respond_with行是什麼?Rails嵌套資源與respond_with銷燬行動

我的路線:

resources :vendors do 
    resources :products, :except => [:index] 
end 

產品#破壞(注@vendor@product發現有before_filter這裏從略)

def destroy 
    @product.destroy 
    respond_with @vendor, @product 
end 

根據我的功能測試,這是回訪/vendors/X/products/X和不是/vendors/X

我是否應該將其更改爲responed_to @vendor

回答

5

我認爲Rails是一個足夠聰明,明白如果@product被破壞

respond_with [@vendor, @product] 

做什麼如果沒有,那麼試試這個

respond_with @product, :location => vendor_path(@vendor) 
+0

是的,你是對的! 'respond_with @vendor,@product,:notice =>'產品已刪除'甚至已經足夠了(注意缺少數組) – mikeycgto

+0

@vendor不存在:D – 2011-07-21 02:13:44

+0

@Eduardo Rdm,'@vendor和@product與一個被忽略的before_filter她的' – fl00r

2

對不起,這個問題的答案是完全錯誤的(誤解你的問題):

你摧毀的代碼可以是這樣的:

def destroy 
    @product = Product.find(params[:id]) 
    @product.destroy 
    redirect_to <route method for vendor's products index>, :notice => 'Any message' 
end 

見在終端的確切路線打字耙路線。

params [:vendor_id]也應該可用。

+0

產品嗯,我沒有指標,所以我猜測'vendor_url(@vendor)'就足夠了? – mikeycgto

+0

是的,那很好。或者你可以只放@vendor,不需要使用助手方法 – 2011-07-21 02:06:49

+0

你將需要找到_at_vendor或使用_at_product.vendor – 2011-07-21 02:10:09