1

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

我的视图中有一个“导出”链接

显示.html.erb

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

患者记录控制器

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"

它也被重定向到 url

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

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

如果我使用 ajax,功能可以正常工作,但文件没有显示在 broser 中下载

4

2 回答 2

0

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

$('#export_link).on ("click", function(e) {
  e.preventDefault();
  $.ajax({
    url: whatever_the_patient_record_path_is,
    etc........
  });
});
于 2013-07-18T16:18:21.833 回答
0

创建具有 <%=RestClient.get(url, :accept => :csv)%> 的 show.csv 文件有效

于 2013-07-18T17:50:08.890 回答