文档中可能有答案,但我似乎找不到好的答案。 所以在三个:url,:action,:方法中,在Rails中的form_for中使用它们有什么区别?
答案 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
,然后我们会传递:action
和your-action-name
表单会发布到该操作
<强>:方法强>
方法用于您要为该操作传递的方法。有几种方法,例如put
,post
,get
...
例如
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'方法。您可以在谷歌中了解这一点。