2012-01-19 62 views
1

我有這個惱人的問題與Rails 3(紅寶石1.9.2)和嵌套的資源。在我的路線:Rails 3銷燬方法respond_with JS使用嵌套資源

resources :lists do 
    resources :items, only: [:destroy, :update, :create] 
end 

ItemsController具有respond_to :json在開始和#destroy看起來是這樣的:

def destroy 
    @item = Item.find(params[:id]) 
    @item.destroy 
    respond_with @list, @item 
end 

摧毀項目鏈接:

<%= link_to 'x', list_item_path(@list, item), method: :delete, remote: true %> 

換算成正確的HTML ,如:

<a href="/lists/1/items/52" data-method="delete" data-remote="true" rel="nofollow">x</a> 

當我點擊鏈接時,我的項目被正確刪除,但方法總是返回{}。我一直在嘗試修補它,但不能從空的JSON對象獲得任何不同的東西!

其他方法(#create#update)按預期工作並返回JSON對象。

回答

2

我不完全確定你會期望它做什麼。如果item被刪除,JSON響應將是空的,因爲它不能返回一個被銷燬的對象。

隨着createupdateitem對象仍然存在,因此它將返回作爲JSON散列。

+0

我認爲這是不正確的。該項目在數據庫中被刪除,但@ item項目仍然存在。另外,如果我對'@ item.destroy'行發表評論,它甚至不會從數據庫中刪除記錄,並且仍然會返回{} –

+0

好吧,我一直在調查這個問題,你幾乎是正確的。如果它是一個GET,那麼我會得到這個對象,但是當你使用DELETE或者PUT時,rails只允許你把{}和狀態OK作爲響應。 –