2

我想以 CSV 格式导出表记录。为此,我想将 id 数组传递给我的控制器(比如“用户”)操作(比如“export_csv”)。

我已经创建了这样的路线

resources :users do
  collection do
    get "/export_csv/data", action: :export_csv, as: :export_csv
  end
end

在我的 link_to 标签中,我像这样传递它

export_csv_users_path(@data) 

生成这样的网址

/users/export_csv/data?format[]=1&format[]=2&format[]=3&format[]=4&format[]=5&format[]=6&format[]=7&format[]=8&format[]=9&format[]=10&format[]=11&format[]=12&format[]=13&format[]=14&format[]=15&format[]=16&format[]=17&format[]=18&format[]=19&format[]=20&format[]=21&format[]=22&format[]=23&format[]=24&format[]=25&format[]=26&format[]=27&format[]=28&format[]=29&...

由于哪个rails会产生错误

406 Not Acceptable 

我想知道有什么方法可以通过路由传递 id 数组,像这样

/users/export_csv/data?format[]=[1,2,3,4,...]

请提出更好的方法。

4

2 回答 2

2

您不能将数组作为 url 中的参数传递。如果要传递数组,可以将数组值组合成一个字符串:

鉴于:

= link_to 'url_name', export_csv_users_path(:data => @data.join(','))

然后你可以在控制器中获取它并拆分以生成数组

array_element = params[:data].split(',')
于 2013-08-02T06:29:33.553 回答
2

最好的方法是在 post 请求中将这些参数作为数据传递。

尝试将其转换为(以及您对该方法的调用):

resources :users do
  collection do
    post "/export_csv/data", action: :export_csv, as: :export_csv
  end
end
于 2013-08-02T06:32:35.650 回答