2016-01-23 90 views
-1

我是新來的鐵軌,並且對以下代碼中的format.json行感到困惑。 status: :createdlocation: @product指的是什麼?這些參數在respond_to塊中的含義是什麼?

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

的[什麼\'可能重複:位置=> ... \'和\'頭:OK \'指的是在「迴應\ _to'format statement?](http://stackoverflow.com/questions/5213956/what-does-location-and-head-ok-mean-in-the-respond-to-format-stat) –

回答

0
  • status: :created表示Rails應用程序響應的HTTP狀態 - 整數表示爲201。 List of HTTP statuses here
  • location: @product實際上會生成url來顯示ProductsController的動作,如product_path(@product),並設置響應的HTTP位置標題。意味着可以通過HTTP GET請求在給定位置URL上檢索資源,更多信息here
+0

正在添加狀態和位置可選?爲什麼?謝謝 –

+0

這是可選的,但正確的狀態和位置是HTTP規範的一部分。遵守它們並儘可能保持應用程序的標準總是很好的。例如,這個JSON API可以被客戶端JS應用程序或移動應用程序使用。對於開發人員來說,使用標準界面而不是自定義工作會更容易。請記住主要的Ruby原則 - 「減少驚喜行爲」:) – Semjon

0

如果非常容易。

您可以發送差異要求的格式 - html(默認),jsonjs

默認動作等待html要求,並採取行動將被混淆,如果它會得到,例如json。所以爲了避免這種情況,你必須添加format.json {},並在大括號中添加你想要呈現的信息。

編輯

更詳細,你可以READ HEAR

相關問題