【发布时间】:2012-11-27 03:00:27
【问题描述】:
文档中可能有答案,但我似乎找不到好的答案。 那么:url、:action、:method这三个在Rails的form_for中使用时有什么区别呢?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 form-for
文档中可能有答案,但我似乎找不到好的答案。 那么:url、:action、:method这三个在Rails的form_for中使用时有什么区别呢?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 form-for
: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中提交表单,那么我们传递:action和your-action-name表单被提交到那个action
:方法
method 用于您要为该操作传递的方法。有几种方法,如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 中了解这一点。
【讨论】: