【问题标题】:how do you write json response destroy methods correctly in rails?你如何在 Rails 中正确编写 json 响应破坏方法?
【发布时间】:2013-09-24 23:32:11
【问题描述】:

这是发送与工作和非工作状态相关的 json 响应的代码。有人对其他资源有建议吗?这是行不通的。谢谢。

if @content.destroy
  format.json { redirect_to @collection, status: :destroyed, notice 'Content was removed from collection.' }, :status => 200
else
  format.json { render json @content.errors, status: :unprocessable_entity }, :status => 400
end

【问题讨论】:

  • 您使用什么框架/应用程序与您的服务器通信?
  • 我在 Rails 中,然后使用 javascript 通过骨干路由器或 ajax 进行拦截
  • 为什么那个实现对你不起作用?你不能在你的 ajax 中捕获异常?
  • 我认为语法有问题,我想听听任何最佳做法

标签: ruby-on-rails json destroy


【解决方案1】:

TL;DR:如果您正在使用一些 JS 框架,那么请查看该框架希望成功和失败响应的样子,如果您自己滚动 - 然后做任何对您更有意义的事情。

长版:

您可以通过多种方式将 Rails 的响应返回到您的 Web 应用程序。 Rails 默认返回状态码 2xx 表示成功,4xx 表示失败请求。一些web框架比如Extjs,喜欢receive response with 200 code always and look at success key in the response to see if the request was successfult。如果您正在编写自己的使用 XHR 的 JS,那么您可以做任何您想做的事情:这取决于您如何构建您的 API。我发现使用 200 代码从服务器返回 json 响应并将成功键设置为 true 或 false 很有用,因此在我的回调 JS 中我可以编写如下内容:

if(request.data.success){
  successfulPost(response);
} else {
  failed(response);
}

我更喜欢这种方法的一个原因是,如果有异常,那么我实际上可以区分由于验证错误而没有保存的记录,而不是导致异常的代码中的错误。但这是个人喜好,有些人可能会争辩说错误就是错误,不管是什么原因造成的。

【讨论】:

  • 感谢您的评论。我在我的项目中使用 Backbone.js。我想我对响应中的语法有点困惑。你还有资源吗?再次感谢您。
猜你喜欢
  • 1970-01-01
  • 2015-03-30
  • 2021-09-22
  • 2011-05-09
  • 1970-01-01
  • 2012-06-12
  • 2011-02-04
  • 2016-09-15
相关资源
最近更新 更多