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) 

このようなURLを生成する

/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&...

レールがエラーを生成するため

406 Not Acceptable 

ルートを介してIDの配列を渡すことができる方法があることを知りたいのですが、このようなものです

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

より良い方法を提案してください。

4

2 に答える 2

2

最善の方法は、投稿リクエストでそのようなパラメーターをデータとして渡すことです。

それを次のように変換してみてください(およびメソッドへの呼び出しも):

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

URL のパラメーターとして配列を渡すことはできません。配列を渡したい場合は、配列値を組み合わせて文字列を形成できます。

ビューで:

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

次に、コントローラーで取得し、分割して配列を生成できます

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