我遇到了Rails 3(ruby 1.9.2)和嵌套资源这个恼人的问题。在我的路线中:
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对象。
答案 0 :(得分:2)
我不完全确定你还期望它做什么。如果删除item
,则JSON响应将为空,因为它无法返回已销毁的对象。
使用create
和update
,item
对象仍然存在,因此它会将其作为JSON哈希返回。