21

文档中可能有答案,但我似乎没有找到好的答案。那么这三个:url、:action、:method,在Rails的form_for中使用时有什么区别呢?

4

3 回答 3

35

和之间:url的区别:action:method

:网址

如果您想为任何特定的控制器、任何特定的操作提交表单并想要传递一些额外的参数(使用在控制器中定义并传递给控制器​​的操作)

例如

<%= 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表单被发布到那个动作


:方法

方法用于您要为该操作传递的方法。有几种方法,例如put,,...postget

例如

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

在上面form_for我们通过:method => :put当这个表单提交它会使用put方法

于 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 符号中写入的任何内容都被视为您的数据应该去的路径。

行动:

Action 是您的控制器中的方法,在您的 form_for @user (其中 @user 是 User 模型的对象)中,如果您说 :action => create 然后它将数据汇总到 users_controller 'create' 函数(def create)。您将在 :url 中提及这一点,以告知数据应该转到指定的操作。

方法:

是http方法,有'get'、'post'、'update'、'patch'和'delete'方法。您可以在 google 中了解这一点。

于 2015-07-29T09:13:21.630 回答