【问题标题】:How to pass an array from a form to a controller method?如何将数组从表单传递到控制器方法?
【发布时间】:2015-07-12 10:47:39
【问题描述】:

我有一个编辑表单,我在其中构建了一个数字数组。当我点击提交时,我会做“ :method => :sort ”。我如何做到这一点,以便我的控制器中的排序方法可以使用数组。编辑表单是在haml中完成的。

【问题讨论】:

    标签: jquery ruby-on-rails ruby haml


    【解决方案1】:

    有更多的解决方案,但我更喜欢这个:

    在表格用于添加的模型中:

    attr_accessor :order_ids
    

    现在在 haml 代码中,即在表单中添加:

    %input{name: "model_name[order_ids][]", type: "hidden", value: order}
    

    并在控制器中:

    params[:model_name][:order_ids]
    

    你应该得到数组。只需将 model_name 更改为您的模型名称即可。

    你为什么要发送:

    = f.submit "Save Changes", :method => :sort
    

    方法作为排序。这是不正确的。如果要将表单发送到控制器中的操作 sort,则需要在 form url 中指定

    假设您在 lists_controller 中有一个名为 sort 的操作,并且在您的路由中将其定义为:

    put '/sort', to: 'lists#sort', as: list_sort
    

    那么你可以把它写成:

    = form_for @list, :html => { :method => :put, :multipart => true, url: list_sort_path } do |f|
    

    希望这会有所帮助。

    【讨论】:

    • 谢谢。我对此比较陌生,所以这对我来说有点困惑。我看不出我在哪里需要该属性以及它到底是什么。到目前为止,我有一个名为“order”的数组,并且我有这一行 = f.submit “Save Changes”,:method => :sort,class:“button btn btn-primary w-100” 我怎样才能发送列表order 到 order 数组,以便控制器中的 sort 方法可以使用它。我如何从控制器中访问它?
    • 只需粘贴您的表单和您想要作为数组发送的内容,以便我进一步提供帮助。该问题没有任何详细信息。
    • 我将部分代码放在问题中。我想将订单发送到排序方法。
    • 我从添加到表单的代码中得到了 #:0x3b3c208> 的未定义局部变量或方法 `order'。
    • 第二行下面
    猜你喜欢
    • 2019-01-21
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    相关资源
    最近更新 更多