【问题标题】:RoR differences between :url, :action, :method in form_for:url、:action、:form_for 中的方法之间的 RoR 差异
【发布时间】:2012-11-27 03:00:27
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    :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 =&gt; @type

    所以:url 是表单提交到的URL。它采用您传递给 url_for 或 link_to 的相同字段。特别是,您也可以在此处直接传递命名路线。


    :动作

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

    在上面的例子中我们传递:action,如果我们想在不同的action中提交表单,那么我们传递:actionyour-action-name表单被提交到那个action


    :方法

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

    例如

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

    在上面的form_for中我们通过:method =&gt; :put这个表单被提交它会使用put方法

    【讨论】:

      【解决方案2】:

      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 %>
      

      【讨论】:

      • 第二个块的@person 后面需要一个逗号。像这样,
      【解决方案3】:

      网址:

      Url 是表单数据的路径。 当您单击表单中的提交按钮时,您在 :url 符号中写入的任何内容都被视为您的数据应该去的路径。

      行动:

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

      方法:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-16
        • 1970-01-01
        • 1970-01-01
        • 2016-04-26
        • 1970-01-01
        • 2014-10-25
        • 2021-11-23
        相关资源
        最近更新 更多