Translation of Ruby on Rails articles

7 décembre 2007, 02: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:

Now I’ll get this blog back to french only :)

mots-clés: , , ,

Commenter

Web Driven Blog

23 octobre 2007, 19: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: , ,

Commenter

Lire un fichier CSV récupéré depuis un formulaire, 2ème partie

27 juillet 2007, 19: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: , , ,

Commenter

Lire un fichier CSV récupéré depuis un formulaire

20 juillet 2007, 20: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: , , ,

Commenter