目前我有一个带有更新方法的 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/