在Rails中,对于失败的销毁请求,我应该为JSON呈现什么?

问题描述 投票:1回答:1

如果我是服务器并且有人向我发送了一个JSON请求来销毁模型/记录但是销毁请求失败了,那么应该给他们什么样的响应。我假设只是发送回来一个没有内容会很糟糕因为他们会认为毁灭是成功的。

所以我的问题是:我应该回报什么?为什么?

此外,我的代码是否遵循良好惯例?我不知道在销毁操作中是否可以执行条件语句,我还自定义了错误消息,这些消息似乎不符合约定:

def destroy
  @book = Book.find(params[:id])

  respond_to do |format|
    if @book.destroy
      format.html { redirect_to books_url, notice: "Book was successfully deleted." }
    else
      format.html do
        error_messages = @book.errors.try(:messages)
        error_messages = error_messages[:base].join('. ') + '.' if error_messages.present?
        flash[:error] = "Book deletion failed. #{ error_messages }"
        redirect_to books_url
      end
    end
    format.json { head :no_content } # what should this be?
  end
end
ruby-on-rails
1个回答
2
投票

如果我是你,我会像这样使用:unprocessable_entity

if @book.destroy
  # ...
  format.json { head :no_content }
else
  # ...
  format.json { head :unprocessable_entity }
end

我发现这个流程图很有启发性:i.stack.imgur.com/whhD1.png

© www.soinside.com 2019 - 2024. All rights reserved.