Rails在同一视图中导出多个csv

问题描述 投票:2回答:1

我在同一视图上有两个csv导出,两者都有不同的数据。目前它只是为两者下载相同的数据。

视图

<%= link_to "Trials export", data_path(format: "csv") %>
<%= link_to "Results export", data_path(format: "csv") %>

调节器

respond_to do |format|
  format.html
  format.csv { send_data @trial_data.trials_export, filename: "trials_export.csv" }
  format.csv { send_data @trial_data.results_export, filename: "results_export.csv" }
end

模型

def self.trials_export
  csv << [ data goes in here all work fine ]
end

def self.results_export
  csv << [ data goes in here all work fine ]
end
ruby-on-rails ruby-on-rails-5
1个回答
1
投票

你的link_to里面你可以添加额外的数据/参数,例如format_data(变量名可以是任何东西)

视图

<%= link_to "Trials export", data_path(request.parameters.merge({:format => :csv, format_data: "trial"})) %>
<%= link_to "Results export", data_path(request.parameters.merge({:format => :csv, format_data: "result"})) %>

在csv块内的控制器中,您可以使用if / case命令将其拆分

调节器

respond_to do |format|
  format.html
  format.csv do 
    if (params[:format_data] == 'trial')
      send_data @trial_data.trials_export, filename: "trials_export.csv"
    elsif (params[:format_data] == 'result')
      send_data @trial_data.results_export, filename: "results_export.csv" 
    end
  end
end
© www.soinside.com 2019 - 2024. All rights reserved.