Ruby 如何在rails中创建到阵列的路由

Ruby 如何在rails中创建到阵列的路由,ruby,ruby-on-rails-3,routes,Ruby,Ruby On Rails 3,Routes,我想以CSV格式导出表记录。为此,我希望将ID数组传递给我的控制器“ssay”用户操作,比如“export_csv” 我创建了这样的路线 resources :users do collection do get "/export_csv/data", action: :export_csv, as: :export_csv end end export_csv_users_path(@data) /users/export_csv/data?format[]=1&

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

我创建了这样的路线

resources :users do
  collection do
    get "/export_csv/data", action: :export_csv, as: :export_csv
  end
end
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&...
/users/export_csv/data?format[]=[1,2,3,4,...]
在我的标签链接中,我这样传递它

resources :users do
  collection do
    get "/export_csv/data", action: :export_csv, as: :export_csv
  end
end
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&...
/users/export_csv/data?format[]=[1,2,3,4,...]
这会生成如下url

resources :users do
  collection do
    get "/export_csv/data", action: :export_csv, as: :export_csv
  end
end
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&...
/users/export_csv/data?format[]=[1,2,3,4,...]
rails产生错误的原因是什么

406 Not Acceptable 
我想知道有没有什么方法可以让我通过路由传递id数组,类似这样的东西

resources :users do
  collection do
    get "/export_csv/data", action: :export_csv, as: :export_csv
  end
end
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&...
/users/export_csv/data?format[]=[1,2,3,4,...]

请建议更好的方法。

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

鉴于:

= link_to 'url_name', export_csv_users_path(:data => @data.join(','))
然后,您可以在控制器中获取它并拆分以生成数组

array_element = params[:data].split(',')

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

鉴于:

= link_to 'url_name', export_csv_users_path(:data => @data.join(','))
然后,您可以在控制器中获取它并拆分以生成数组

array_element = params[:data].split(',')

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

尝试将其转换为,并调用该方法:

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

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

尝试将其转换为,并调用该方法:

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

如果中的ID数超过100个左右,这将不起作用。如果你认为他们会比这更多,你应该把它转换成post。Long应该永远是一个o号。@sahildhankhar:你可能是对的,但我们仍然不能通过get或post请求以数组的形式发送参数。嘿,aman,感谢你对这个请求/用户/导出/U csv/数据的反馈?format[]=1和format[]=2和format[]=3和format[]=4和format[]=5和format[]=6,同时在controller params[:format]中访问它威尔给出[1,2,3,4,5,6]我的意思是,他之所以会出现406错误,是因为url中的格式[]一次又一次地重复,这使得大小变大了。在控制器中没有加入和拆分的理由,它只是帮助减小了大小。如果控制器中的ID数超过100个左右,这将不起作用。如果你认为他们会比这更多,你应该把它转换成post。Long应该永远是一个o号。@sahildhankhar:你可能是对的,但我们仍然不能通过get或post请求以数组的形式发送参数。嘿,aman,感谢你对这个请求/用户/导出/U csv/数据的反馈?format[]=1和format[]=2和format[]=3和format[]=4和format[]=5和format[]=6,同时在controller params[:format]中访问它威尔给出[1,2,3,4,5,6]我的意思是,他之所以会出现406错误,是因为url中的格式[]一次又一次地重复,这使得大小变大了。在控制器中没有加入和拆分的理由,它只是帮助减少了大小。在post方法中,它带有路由错误->无路由匹配/users/export\u csv/dataOk。它解决了我的问题,因为我没有在linkhey Jeet中定义method=>post,你介意让我知道你最终使用了什么吗?在post方法中,它带有路由错误->无路由匹配/users/export\u csv/dataOk它解决了我的问题,因为我错过了在我的linkhey Jeet中定义方法=>post,你介意让我知道你最终使用了什么吗?