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对象。
我认为这是不正确的。该项目在数据库中被删除,但@ item项目仍然存在。另外,如果我对'@ item.destroy'行发表评论,它甚至不会从数据库中删除记录,并且仍然会返回{} –
好吧,我一直在调查这个问题,你几乎是正确的。如果它是一个GET,那么我会得到这个对象,但是当你使用DELETE或者PUT时,rails只允许你把{}和状态OK作为响应。 –