請解釋爲什麼我們需要在控制器中使用此代碼?這段代碼的意義是什麼?爲什麼控制器需要多種格式渲染?
respond_to do |format|
format.html # index.html.erb
format.json { render json: @users }
end
請解釋爲什麼我們需要在控制器中使用此代碼?這段代碼的意義是什麼?爲什麼控制器需要多種格式渲染?
respond_to do |format|
format.html # index.html.erb
format.json { render json: @users }
end
它允許您根據用戶/調用者請求的格式對輸出進行不同的格式設置。如果您要訪問http://yourhost/controller/index.html
,控制器將回應ERB模板index.html.erb
(或HAML或其他)。如果您要訪問http://yourhost/controller/index.json
,它將使用JSON模板index.json.erb
進行響應。
這使您可以擁有一個可以準備數據的控制器操作,然後根據請求的格式選擇視圖進行渲染。
定義調用respond_with時默認呈現的mime類型。所以基本上,這意味着你的控制器動作可以以不同的格式命中(html,json在你的情況下),並且仍然提供數據給任何調用它的東西。這對API開發以及其他許多事情都有幫助。 例如:您想獲得所有用戶的json列表,以便使用JavaScript進行操作。你會打電話給/users.json,這會去你的user_controller#index行動,並知道要呈現所有用戶的json對象。
上述代碼是腳手架生成的,它提供了一種呈現控制器的*.html
和*.json
視圖的方法,使您可以輕鬆訪問數據以實現API或Web應用程序的普通視圖。
您還可以創建XML輸出:
format.xml { render xml: @users }
和其他格式,如PDF,DOC或根據您所使用的寶石。
請注意,您不必這樣做。如果您的網站僅爲HTML,則可以刪除您粘貼的所有代碼,然後直接轉到默認呈現,這將是HTML模板。 –