ruby-on-rails - Rails 4 需要并允许更新 PUT 请求

标签 ruby-on-rails ruby http ruby-on-rails-4

目前我有一个带有更新方法的 Rails Controller :

def update
  respond_to do |format|
    if @segment.update(segment_params)
      format.html { redirect_to @segment, notice: 'Segment was successfully updated.' }
    else
      format.json { render json: @segment.errors, status: :unprocessable_entity }
    end
  end
end

segment_params 方法:

  def segment_params
    params.require(:segment).permit(:name, :description, :f_30_day_estimated_reach, :tags)
  end

我不确定如何让 Rails 接受实际请求。我正在使用 Postman (Google Chrome) 来发出请求。我正在向 localhost:3000/segments/2677.json 发出一个 PUT 请求,并将分段信息作为 JSON。这是正确的做法吗?或者这是一个 URL 参数?不太确定如何将其格式化为 URL 参数。

最佳答案

您不应通过 GET 请求更改服务器数据。有关其背后的原因,请参阅:http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html第 9.1.1 节 - 基本上 GET 和 HEAD 请求应该始终是安全的。

您现在使用的方法实际上是一个很好的方法。我唯一的建议——如果你真的想遵循 HTTP 规范,将使用 PATCH 而不是 PUT 进行部分更新。 PATCH 的语义本质上不是像 PUT 那样幂等,而是像您正在做的那样进行增量更新。请参阅:http://restful-api-design.readthedocs.org/en/latest/methods.html有关该主题的更多信息。

关于ruby-on-rails - Rails 4 需要并允许更新 PUT 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26518092/

相关文章:

ruby-on-rails - 有没有办法在 Rails Jbuilder 模板中隐藏属性?

ruby-on-rails - Rails-TypeError : Unable to resolve type 'size_t' (Big Sur - M1)

ruby-on-rails - 设计不显示登录错误消息

ruby-on-rails - RSpec stub 邮件程序

http - 为什么 request.getRequestDispatcher 不起作用?

java - HTTP header 变为小写 2

ruby-on-rails - 如何在我的模块 rails 中访问我的模型类?

ruby - 判断字符串是否为 Ruby 保留字的内置方法?

ruby - 回到 rspec-mocks 中的原始方法

c# - 在非 HTTP 服务器实现的 .Net 通用主机中使用 AddHttpClient 时无法解析 HttpClient