基于ajax的CSV导出

时间:2017-02-21 21:56:36

标签: javascript ruby-on-rails ruby csv logic

所以我遇到了一个我一直困扰的问题。我有一个页面,所以说一张学生的表格及其所有信息:成绩,性别等。现在我在该页面上有一个可以过滤掉属性的功能。所以,通过ajax我重新渲染表格,如果我想看到所有男孩。现在我在页面底部有一个下载csv链接,但我想根据过滤使其动态化。我不知道该怎么做。

我尝试使用gon,gon.watch但没有成功。

1 个答案:

答案 0 :(得分:0)

您可能应该使用类似https://github.com/activerecord-hackery/ransack的内容进行安全搜索。然后在你的意见中:

= form_for(@search) do |f|
  = f.label :gender
  = f.select :gender, ["Male", "Female"]
  = f.submit "Filter"
# table of users
= link_to "Download CSV", students_path(format: 'csv'), class: 'download-csv'

每当过滤器更改时,一个JS代码将重新加载表,其他代码将更新下载链接参数

$(document).ready(function () {
  $('.download-csv').on('click', function (e) {
    e.preventDefault();
    var link = this;
    var formData = $('form').serialize();
    link.href = link.href.toString().replace(/\?.+$/, "?" + formData + "&format=csv");
    location.href = link.href;
  });
);

在您的控制器中,您只需在request[:format] == 'csv'

时呈现CSV