ドキュメンテーションに回答があるかもしれませんが、私は良い答えを見つけられないようです。 3つの:url、:action、:methodの中で、Railsのform_forで使用した場合の違いは何ですか?
: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
を渡し、:action
とyour-action-name
を渡します。フォームはそのアクションへの投稿です
:メソッド
methodは、そのアクションに渡すメソッドに使用されます。 put
、post
、get
...のようないくつかの方法があります。
例
form_for @post, :url => post_path(@post), :method => :put, ....
上記のform_for
では、このフォームが送信されるときに:method => :put
を渡し、put
メソッドを使用します
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 %>
URL:
URLは、フォームデータの移動先のパスです。 :urlシンボル内に書き込んだ内容は、フォームの送信ボタンをクリックしたときにデータが移動するパスと見なされます。
アクション:
Actionは、form_for @user(@userはUserモデルのオブジェクト)内のコントローラーのメソッドです。:action => createとすると、users_controllerの「create」関数(def create)にデータが集約されます。これを:url内で言及して、データを特定のアクションに送る必要があることを伝えます。
方法:
Httpメソッドであり、「get」、「post」、「update」、「patch」、および「delete」メソッドがあります。あなたはグーグルでこれについて学ぶことができます。