文档中可能有答案,但我似乎没有找到好的答案。那么这三个:url、:action、:method,在Rails的form_for中使用时有什么区别呢?
3 回答
和之间: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
,,...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 符号中写入的任何内容都被视为您的数据应该去的路径。
行动:
Action 是您的控制器中的方法,在您的 form_for @user (其中 @user 是 User 模型的对象)中,如果您说 :action => create 然后它将数据汇总到 users_controller 'create' 函数(def create)。您将在 :url 中提及这一点,以告知数据应该转到指定的操作。
方法:
是http方法,有'get'、'post'、'update'、'patch'和'delete'方法。您可以在 google 中了解这一点。