如何将数组从表单传递到控制器方法?

How to pass an array from a form to a controller method?

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

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

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

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|

希望这对您有所帮助。