[英]How exactly does rails respond_to work?
目前,我正在構建一個需要遠程表單的應用程序,發現我從未真正理解過rails respond_to
如何工作。
例如,我在視圖中有以下代碼
<%= form_tag ..., :remote => true %>
<%= submit_tag "submit" %>
<% end %>
我有一個名為_home.js.erb
的javascript部分,假設相關操作名為home
。
我了解如果我的控制器中包含以下代碼:
def home
# ...
respond_to do |format|
format.html
format.js { render :partial => 'home' }
end
end
當按下表單的提交按鈕時,這將在_home.js.erb
執行javascript。 但是,按下提交按鈕時到底發生了什么? Rails如何確切知道是否對HTML或javascript進行respond_to
?
非常感謝你!
如果標題指示其類型,則Responder對象將呈現內容
否則,將調用魔術方法,該方法調用object.method作為響應類型的名稱(例如csv
)
這就要求將這種方法定義為響應類型的處理程序。 這里回答了有關如何創建自定義響應者的精彩討論 。
提交按鈕發布帶有某些標題/ MIME設置的表單。 respond_to
根據請求的內容類型,動詞和資源狀態決定如何操作。
在選項哈希中, remote: true
是請求Rails用javascript響應。
如果您有網絡檢查員,則簽出“網絡”選項卡,提交表單,然后您可以在接受字段的http請求標頭中看到發布請求正在請求javascript的信息。 如果您在options哈希中沒有remote標簽,則您的表單提交將請求html。
此外,如果在項目目錄中進行rake路由,您會看到幾乎所有路由都以。:format關鍵字/posts(.:format)
,這使您的控制器可以響應用戶可能潛在的多種格式類型在特定控制器中定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.