Cet article va vous montrer comment ajouter un bouton d’export CSV sur votre application rails.
Vous allez voir c’est très simple.
Il faut commencer par importer la bibliothèque csv
dans votre fichier config/application.rb
comme suit :
require 'rails/all'
require 'csv'
Ensuite on implémente une méthode de classe as_csv
dans le modèle en question :
def self.as_csv
CSV.generate do |csv|
csv << column_names
all.each do |item|
csv << item.attributes.values_at(*column_names)
end
end
end
Ce code va exporter toutes les données avec tous les attributs du modèle. Si vous voulez faire des filtres sur le modèle pour n'afficher que les attributs nom
, prenom
et email
vous pouvez écrire le code suivant :
def self.as_csv
CSV.generate do |csv|
colonnes = %w(prenom nom email)
csv << colonnes
all.each do |item|
csv << item.attributes.values_at(*colonnes)
end
end
end
Tout ce qui reste à faire c'est d'ajouter ce bout de code à votre contrôleur pour qu'il prenne en compte l'extension csv.
def index
@users = User.all
respond_to do |format|
format.html
format.csv { send_data User.as_csv }
end
end
Voilà c'est tout. Si vous accédez à l'URL http://localhost:3000/users.csv
une belle fenêtre s'ouvrira pour vous proposer d'enregistrer votre fichier CSV qui contient la liste de tous les utilisateurs 🙂