如果我是服务器并且有人向我发送了一个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
如果我是你,我会像这样使用:unprocessable_entity
:
if @book.destroy
# ...
format.json { head :no_content }
else
# ...
format.json { head :unprocessable_entity }
end
我发现这个流程图很有启发性:i.stack.imgur.com/whhD1.png