8

Railsは、getアクションによってレンダリングされたページと新しいアクションによってレンダリングされたページの両方で使用できるフォームパーシャルを生成します。前者の場合、フォームのメソッドはPUTに設定され、後者の場合、フォームのアクションはPOSTに設定されます。

レールはどの方法を使用するかをどのように決定しますか?

4

2 に答える 2

13

フォームに渡されるオブジェクトがである場合persisted?、フォームビルダーは、オブジェクトを更新していることを認識しているため、PUTアクションをレンダリングします。永続化されていない場合は、新しいオブジェクトを作成していることを認識し、を使用しますPOST

<%= form_for @user do |f| %>
  <%= f.button %>
<% end %>

@userが新しいレコードの場合は、POSTが使用され、ボタンのラベルはになります。Create Userそれ以外の場合は、PUTが使用され、ラベルはになりUpdate Userます。それ以上のものはありません。

于 2012-08-08T16:10:07.960 に答える
3

既存のリソースを編集するフォームは使用PUTし、新しいリソースを作成するフォームは使用しますPOSTここで説明されているREST標準に従って。

Railsform_forヘルパーコードから:

action, method = object.respond_to?(:persisted?) && object.persisted? ? [:edit, :put] : [:new, :post]

persisted?ActiveRecordの場合は次のように宣言されます。

!(new_record? || destroyed?)
于 2012-08-08T16:07:46.540 に答える