head:ok对a:js响应有效吗?

时间:2016-08-09 19:41:47

标签: javascript ruby-on-rails

我有一个项目列表。用户可以单击按钮添加新项目。他们还可以删除现有项目。有时会保存这些项目,有时这些项目未保存。因此,如果他们未保存,我不想将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,这是否是可接受的解决方案?

1 个答案:

答案 0 :(得分:0)

我的第一个想法是查看JSON:API推荐的DELETE请求,而不需要返回任何内容。 ( Somewhat 与您的情况类似。)

From their spec

  

204无内容

     

如果删除请求成功且未返回任何内容,则服务器必须返回204 No Content状态代码。

所以似乎最好的行动方案就是:

head :no_content

您希望了解客户对接收204响应的反应,但它可能会被接受为类似OK的响应,因为它位于200系列中。