这些参数在respond_to块中意味着什么?

时间:2016-01-23 18:17:07

标签: ruby-on-rails json model-view-controller

我是rails的新手,对下面代码中的format.json行感到困惑。 status: :createdlocation: @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

包含状态和位置是否可选?我对于什么是可选内容以及可能添加自定义状态/位置的原因感到困惑。

2 个答案:

答案 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(默认),jsonjs

默认情况下,操作会等待html请求,如果有问题,操作将会混淆,例如json。因此,为了避免这种情况,您必须添加format.json {}并在大括号中添加您想要呈现的信息。

修改

您可以READ HEAR

了解更多细节