Translation of Ruby on Rails articles
6 décembre 2007, 16:02
I have translated the articles about importing a csv file from a form using Ruby on Rails. The result is an article available on my new blog which is in english.
You will find more Rails articles on WebDrivenBlog:
- A simple users system 1/2
- A simple users system 2/2
- Assigning a collection to has_many :through
- Installing the Theme support plugin with Rails 1.2
Now I’ll get this blog back to french only :)
mots-clés: csv, rails, ruby, ruby on rails
Web Driven Blog
23 octobre 2007, 09:36
Salut à tous, à partir d’aujourd’hui, les articles sur le développement Web: Ruby on Rails, Ruby, Prototype, Script.aculo.us et tous ceux que je ne citerai pas sinon je n’aurai pas assez de place; seront traités sur mon nouveau blog: Web Driven Blog
Donc rendez-vous bientôt sur Web Driven Blog
mots-clés: rails, ruby, ruby on rails
Lire un fichier CSV récupéré depuis un formulaire, 2ème partie
27 juillet 2007, 09:55
La semaine dernière, j’avais expliqué comment importer un fichier CSV uploadé depuis un formulaire d’une page web avec Ruby on Rails.
Le code fonctionne très bien, cependant on aimerait vérifier que l’utilisateur spécifie bien un fichier CSV avant d’effectuer l’import. Pour cela j’avais fait ce test:
unless params[:csv][:file] == "" || params[:csv][:file].nil?
# lire le fichier CSV à partir d'ici
end
Je développe sous Opera en général et lorsque je dois faire des vérifications de mes requêtes Ajax ou de mon code CSS j’utilise Firefox (comme tout le monde). Et ce n’est que lorsque j’ai effectué les tests de validation sous Internet Explorer que je me suis rendu compte de la singularité du traitement des formulaires de fichiers sous Opera.
En effet celui-ci retourne une chaîne vide lorsqu’aucun fichier n’est spécifié, alors que pour IE et Firefox, il ne s’agit pas d’une chaîne vide. On obtient en Ruby un StringIO qui une fois lu nous retourne une chaîne vide si aucun fichier n’a été spécifié. J’effectue donc un test supplémentaire:
unless params[:csv][:file] == "" || params[:csv][:file].nil?
csv_file = params[:csv][:file].read
unless csv_file == ""
# lire le fichier CSV à partir d'ici
# cette fois on utilise csv_file au lieu de params[:csv][:file]
end
end
Voilà ça me semblait important de signaler la différence de comportement selon les navigateurs :)
mots-clés: csv, rails, ruby, ruby on rails
Lire un fichier CSV récupéré depuis un formulaire
20 juillet 2007, 10:05
Voilà je suis en stage chez Dexem pour qui je développe Pagecreator (outil de création de Services Vocaux Interactifs en VXML). En ce moment je travaille sur une version dans laquelle on veut pouvoir importer un fichier CSV depuis un formulaire. Voici donc comment le faire avec Ruby on Rails.
Pour récupérer un fichier depuis un formulaire, il suffit de deux choses, une déclaration du formulaire adéquate et le champ qui va permettre de récupérer le fichier:
<%= start_form_tag({:action => 'import_csv', :id => my_object}, :multipart => true) %>
<label for="csv_file">File to Upload</label>
<%= file_field_tag "csv_file" %>
<%= end_form_tag %>
Ensuite dans l’action import_csv de votre controller, pour parser le fichier CSV et l’importer vers la base de données, il suffit de faire:
def import_csv
begin
CSV::Reader.parse(params[:csv_file]).each do |row|
unless row[0].nil? or row[1].nil?
MyObject.create(:name => row[0], :value => row[1])
end
end
rescue
flash[:error] = "There was an error parsing your CSV file"
end
end
Capturer les exceptions à l’aide d’un bloc begin rescue permet d’afficher un message d’erreur à l’utilisateur si le fichier est mal formaté, et voilà le tour est joué :)
mots-clés: csv, rails, ruby, ruby on rails