我是rails的新手,对下面代码中的format.json
行感到困惑。 status: :created
和location: @product
指的是什么?
def create
@product = Product.new(params[:product])
respond_to do |format|
if @product.save
format.html { redirect_to @product, notice: 'Product was successfully created.' }
format.json { render json: @product, status: :created, location: @product }
format.js
else
format.html { render action: "new" }
format.json { render json: @product.errors, status: :unprocessable_entity }
format.js
end
end
end
包含状态和位置是否可选?我对于什么是可选内容以及可能添加自定义状态/位置的原因感到困惑。
答案 0 :(得分:0)
status: :created
表示rails app响应的HTTP状态 - 整数表示为201。 List of HTTP statuses here location: @product
实际上会生成url以显示Products product_path(@product)
的ProductsController的操作,并设置响应的HTTP位置标头。表示可以使用HTTP GET请求在给定位置URL上检索资源,更多信息here 答案 1 :(得分:0)
如果非常简单。
您可以发送差异请求格式 - html
(默认),json
,js
等
默认情况下,操作会等待html
请求,如果有问题,操作将会混淆,例如json
。因此,为了避免这种情况,您必须添加format.json {}
并在大括号中添加您想要呈现的信息。
修改强>
您可以READ HEAR
了解更多细节