web-dev-qa-db-ja.com

form_for内の:url、:action、:methodのRoRの違い

ドキュメンテーションに回答があるかもしれませんが、私は良い答えを見つけられないようです。 3つの:url、:action、:methodの中で、Railsのform_forで使用した場合の違いは何ですか?

19
sovanlandy

:url:action:methodの違い

:url

特定のコントローラー、特定のアクションのフォームを送信し、追加のパラメーターを渡したい場合(コントローラーに渡すコントローラーで定義するアクションを使用)

<%= form_for @post, :url => {:controller => "your-controller-name", :action => "your-action-name"} do |f| %>

上記のコードでは、フォームはそのコントローラー(URLを渡す)に送信され、そのアクション(あなたはアクションを渡す)に移動します。デフォルトは現在のアクションになります。

次に、追加のパラメーターを渡したいとしますたとえば

form_for @post, :url => { :action => :update, :type => @type, :this => @currently_editing } do |f| ...

:type => @typeのような追加のパラメータを渡すことができます

so :urlは、フォームが送信されるURLです。 url_forまたはlink_toに渡すのと同じフィールドを取ります。特に、ここで名前付きルートを直接渡すこともできます。


:action

 form_for @post, :url => { :action => :update, :type => @type, :this => @currently_editing } do |f| ...

上記の例では、フォームを別のアクションで送信する場合は:actionを渡し、:actionyour-action-nameを渡します。フォームはそのアクションへの投稿です


:メソッド

methodは、そのアクションに渡すメソッドに使用されます。 putpostget ...のようないくつかの方法があります。

form_for @post, :url => post_path(@post), :method => :put, ....

上記のform_forでは、このフォームが送信されるときに:method => :putを渡し、putメソッドを使用します

34
Dipak Panchal

form_forは基本的にオブジェクトで使用されます。例えば:

      <% form_for @person do |f| %>
       ...
      <% end %>

[送信]をクリックすると、:newから:create、:edit =>:updateなどのデフォルトアクションに移動します。独自のアクションを指定する場合は、:urlを使用する必要があり、:methodを使用して強制的に投稿または取得します。例えば:

      <% form_for @person :url => {:action => "my_action"}, :method => "post" do |f| %>
       ...
      <% end %>
13
dealer

URL:

URLは、フォームデータの移動先のパスです。 :urlシンボル内に書き込んだ内容は、フォームの送信ボタンをクリックしたときにデータが移動するパスと見なされます。

アクション:

Actionは、form_for @user(@userはUserモデルのオブジェクト)内のコントローラーのメソッドです。:action => createとすると、users_controllerの「create」関数(def create)にデータが集約されます。これを:url内で言及して、データを特定のアクションに送る必要があることを伝えます。

方法:

Httpメソッドであり、「get」、「post」、「update」、「patch」、および「delete」メソッドがあります。あなたはグーグルでこれについて学ぶことができます。

3
Bibin Venugopal