我有一个项目列表。用户可以单击按钮添加新项目。他们还可以删除现有项目。有时会保存这些项目,有时这些项目未保存。因此,如果他们未保存,我不想将javascript传回浏览器来执行。我只想做什么。所以我想这样做:
def destroy
respond_to do |format|
@line_item = LineItem.find_by_id(params[:id])
if @line_item.present?
@line_item_id = @line_item.id
@line_item.destroy
format.js
else
format.js { head :ok }
end
end
end
我知道head :ok
只是将响应标头传回浏览器,并以空格作为正文。如果这是一个:json
响应,这将是一个问题,因为当尝试将该空白空间解析为json时,javascript客户端代码会引发异常。但是,如果回复是:js
,这是否是可接受的解决方案?
答案 0 :(得分:0)
我的第一个想法是查看JSON:API推荐的DELETE
请求,而不需要返回任何内容。 ( Somewhat 与您的情况类似。)
204无内容
如果删除请求成功且未返回任何内容,则服务器必须返回
204 No Content
状态代码。
所以似乎最好的行动方案就是:
head :no_content
您希望了解客户对接收204
响应的反应,但它可能会被接受为类似OK的响应,因为它位于200系列中。