Rails 在同一视图中导出多个 csv [英] Rails export multiple csv in same view

查看:59
本文介绍了Rails 在同一视图中导出多个 csv的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have two csv exports on the same view, both with different data. Currently it's just downloading the same data for both.

查看

<%= 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

推荐答案

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

inside your link_to you can add additional data / parameters for example format_data (variable name can be anything)

查看

<%= 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 命令将其拆分

in your controller inside csv block you can split it with if / case command

控制器

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

这篇关于Rails 在同一视图中导出多个 csv的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆