ドキュメントに答えがあるかもしれませんが、良い答えが見つからないようです。では、:url、:action、:method の 3 つのうち、Rails の form_for で使用した場合の違いは何ですか?
3 に答える
と:url
の違い:action
:method
:URL
特定のコントローラー、特定のアクションのフォームを送信し、追加のパラメーターを渡したい場合 ( controller に渡すコントローラーで定義する action を使用します)
例えば
<%= 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
:url
フォームが送信される URL も同様です。url_for または link_to に渡すのと同じフィールドを使用します。特に、ここで名前付きルートを直接渡すこともできます。
:アクション
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 シンボル内に記述した内容は、フォームの送信ボタンをクリックしたときにデータが移動するパスと見なされます。
アクション:
アクションはコントローラーのメソッドであり、form_for @user (@user は User モデルのオブジェクト) で、 :action => create と言うと、データを users_controller 'create' 関数 (def create) に送信します。:url 内でこれに言及して、データが指定されたアクションに移動する必要があることを伝えます。
方法:
httpメソッドで、「get」「post」「update」「patch」「delete」メソッドがあります。これについてはグーグルで学ぶことができます。