从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,功能正常,但该文件不会显示在更明亮的下载
答案 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;作品