2012-01-19 28 views
1

私はRails 3(ruby 1.9.2)とネストされたリソースでこの厄介な問題を抱えています。私のルートで:Rails 3 destroyメソッド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応答は空になります。

createupdateの場合、itemオブジェクトがまだ存在するため、そのオブジェクトはJSONハッシュとして返されます。

+0

私はそれが正しくないと信じています。アイテムはDB上で削除されますが、 '@ item'オブジェクトはまだ存在します。また、 '@ item.destroy'行にコメントすると、DBからレコードを削除しても{} –

+0

が返されますので、私はこの問題について調査を続けました。それがGETだった場合はオブジェクトを取得しますが、DELETEまたはPUTレールを使用すると、レスポンスとして{}とステータスOKを取得することしかできません。 –

関連する問題