RoR之间的区别:url,:action,:form_for中的方法

时间:2012-11-27 03:00:27

标签: ruby-on-rails ruby-on-rails-3 form-for

文档中可能有答案,但我似乎找不到好的答案。 所以在三个:url,:action,:方法中,在Rails中的form_for中使用它们有什么区别?

3 个答案:

答案 0 :(得分:33)

: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_for或link_to的相同字段。特别是你也可以直接传递一个命名路线。


<强>:动作

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

在上面的示例中,如果我们想要以不同的操作提交表单,我们会传递:action,然后我们会传递:actionyour-action-name表单会发布到该操作


<强>:方法

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

例如

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

在上面form_for我们通过:method => :put提交此表单时,它将使用put方法

答案 1 :(得分:12)

form_for基本上用于对象。例如:

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

当您点击提交时,它将转到默认操作,例如:new to:create,:edit =&gt; :更新。如果要指定自己的操作,则必须使用:url和:method用于强制发布或获取。例如:

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

答案 2 :(得分:3)

URL:

Url是表单数据的路径。 你写的内容:url符号被认为是当你点击表单中的提交按钮时你的数据应该走的路径。

动作:

如果您说:action =&gt;然后创建它将数据汇总到users_controller'create'函数(def create)。 你会在里面提到这个:url告诉数据应该转到指定的动作。

方法:

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