2013-07-18 4 views
0

Quelle est la bonne façon d'exporter des données vers un fichier csv à partir de rails.exporter des données vers csv sans changer de page

J'ai un lien "export" dans mes vues

de 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 

Lorsque je clique sur l'exportation, je reçois l'erreur

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" 

il est également redirigé vers l'URL

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

I pages ne devrait pas être même la redirection, je veux simplement exporter un fichier csv et continuer sur la même page

Si je ajax, la fonctionnalité fonctionne très bien, mais le fichier ne s'affiche pas être téléchargé dans le broser

Répondre

0

Vous faites une requête GET à 'show' et il lance l'erreur car il recherche un fichier show.html.erb dans le dossier des patients. . Il serait possible d'éviter la page de redirection si vous avez utilisé jquery + ajax pour émettre la demande en faisant quelque chose comme ceci:

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

J'ai essayé ceci, mais j'avais l'impression que si vous utilisiez ajax alors le téléchargement ne s'afficherait pas dans le navigateur –

+0

Cela fonctionne à merveille, mais comme je viens de le dire, le téléchargement ne "pop" pas dans le navigateur en téléchargement –

0

la création d'un fichier show.csv qui a <% = RestClient.get (url, : accept =>: csv)%> fonctionne

Questions connexes