将数据导出到csv而不更改页面

时间:2013-07-18 16:01:35

标签: ruby-on-rails ruby csv export

从rails导出数据到csv文件的正确方法是什么。

我的观点中有“导出”链接

shows.html.erb

 <%= link_to "CSV", patient_record_path(format: "csv") %>

patient_record_controller

def show

    ....
    respond_to do |format|
        format.html
        format.csv {
        send_data RestClient.get(url, :accept => :csv), :type => 'text/csv; charset=iso-8859-1; header=present', :disposition => "attachment; filename=data.csv"
        }
    end
end

当我点击导出时,我收到错误

Template is missing

Missing template patient_record/show, application/show with {:locale=>[:en], :formats=>[:csv], :handlers=>[:erb, :builder, :coffee]}. Searched in: * "/RubymineProjects/my_app/app/views"

它也被重定向到网址

http://www.host.com/patient_record/1.csv

我甚至不应该重定向页面,我只是想导出一个csv文件并保持在同一页面上

如果我使用ajax,功能正常,但该文件不会显示在更明亮的下载

2 个答案:

答案 0 :(得分:0)

您正在执行“显示”的GET请求,并且它正在抛出错误,因为它正在患者记录控制器中查找show.html.erb文件。如果您使用jquery + ajax通过执行以下操作来发出请求,则可以避免页面重定向:

$('#export_link).on ("click", function(e) {
  e.preventDefault();
  $.ajax({
    url: whatever_the_patient_record_path_is,
    etc........
  });
});

答案 1 :(得分:0)

创建一个show.csv文件,其中包含&lt;%= RestClient.get(url,:accept =&gt;:csv)%&gt;作品