21

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

4

3 に答える 3

35

: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、フォームを別のアクションで送信したい場合に渡します。その後:actionyour-action-nameフォームはそのアクションに投稿されます。


:方法

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

例えば

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

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

于 2012-11-27T06:51:31.417 に答える
13

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 %>
于 2012-11-27T03:15:35.383 に答える
3

URL:

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

アクション:

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

方法:

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

于 2015-07-29T09:13:21.630 に答える