2017-02-21 1 views
0

그래서 내가 붙어있는 문제가 있습니다. 나는 페이지를 가지고 있기 때문에 학생들의 테이블과 모든 정보 (성적, 성별 등)를 말할 수 있습니다. 이제 특성을 걸러 낼 수있는 페이지의 기능이 있습니다. 그래서 아약스를 통해 모든 소년을보고 싶으면 테이블을 다시 렌더링합니다. 이제 페이지 하단에 csv 링크가 다운로드되었지만 필터링을 기반으로 동적으로 변경하려고합니다. 나는 이것에 대해 어떻게 가야할지 모르겠다.아약스를 기반으로 한 CSV 내보내기

gon, gon.watch를 사용해 보았지만 성공하지 못했습니다.

+0

다운로드하기 전에 필터링 된 매개 변수를 CSV 링크로 보내고 결과를 필터링하십시오. –

+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' 

CSV를 필터가 변경 될 때마다 테이블을 다시로드되며, 다른 코드가

$(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; 
    }); 
); 

PARAMS 다운로드 링크를 업데이트합니다 그리고 컨트롤러에 그냥 렌더링 한 JS 코드 request[:format] == 'csv'