Rails生成的表單部分可用於get動作呈現的頁面和新動作呈現的頁面。如果是前者,則表單的方法設置爲PUT,如果後者將表單的操作設置爲POST。Rails如何決定使用PUT或POST方法呈現表單?
軌道如何決定使用哪種方法?
Rails生成的表單部分可用於get動作呈現的頁面和新動作呈現的頁面。如果是前者,則表單的方法設置爲PUT,如果後者將表單的操作設置爲POST。Rails如何決定使用PUT或POST方法呈現表單?
軌道如何決定使用哪種方法?
如果傳遞給表單對象是persisted?
,表單生成器知道你是更新一個對象,並因此將呈現PUT
操作。如果它沒有被保存,那麼它知道你正在創建一個新對象,它將使用POST
。
<%= form_for @user do |f| %>
<%= f.button %>
<% end %>
如果@user
是一個新的記錄,POST
使用和按鈕標籤變成Create User
,否則使用PUT
和標籤變得Update User
。沒有更多。
表單編輯現有資源使用PUT
,表單創建新資源使用POST
。按照描述的REST標準here。
從軌道form_for
助手代碼:
action, method = object.respond_to?(:persisted?) && object.persisted? ? [:edit, :put] : [:new, :post]
和persisted?
ActiveRecord的聲明爲:
!(new_record? || destroyed?)
我的問題是Rails如何決定在表單上設置哪種方法。它用什麼來決定? – Undistraction 2012-08-08 16:11:29
更新了,是你想要的嗎? – PinnyM 2012-08-08 16:15:44
謝謝。害怕@hgmnz雖然擊敗你。 – Undistraction 2012-08-08 18:21:22
謝謝。我結束了使用created_at,因爲我正在使用客戶端js訪問我的模型,並將@model暴露爲gon的散列。所以我只剩下屬性了。 – Undistraction 2012-08-08 18:19:50