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オブジェクトを返して返します。
私はそれが正しくないと信じています。アイテムはDB上で削除されますが、 '@ item'オブジェクトはまだ存在します。また、 '@ item.destroy'行にコメントすると、DBからレコードを削除しても{} –
が返されますので、私はこの問題について調査を続けました。それがGETだった場合はオブジェクトを取得しますが、DELETEまたはPUTレールを使用すると、レスポンスとして{}とステータスOKを取得することしかできません。 –