Bolo_M
November 27, 2006, 5:36am
1
Bonjour,
J’essaye de lire le contenu d’un fichier
<%= form_tag (enseignements_path, :multipart => true ) %>
<%= file_field ‘document’, ‘file’ %>
<%= submit_tag ‘Import’ %>
<%= end_form_tag %>
mon code
def create
if params[:document][:file]
require ‘yaml’
fiche_ens = YAML::load( File.open(params[:document][:file]) )
#flash [:notice] = fiche_ens[“titre”]
else
#@enseignement = Enseignement.new(params[:enseignement])
en
end
Quand je teste le formulaire j’ai ce message
TypeError in EnseignementsController#create
can’t convert StringIO into String
Ou est mon erreur .?
Merci
Bolo_M
November 27, 2006, 7:22am
2
Y a un truc assez sympa qui s’appelle la doc et elle indique même le
type des paramètres.
http://www.rubycentral.com/book/ref_c_file.html#File.open
2006/11/27, Bolo M. [email protected] :
Bolo_M
November 27, 2006, 3:47pm
3
tu as fais l’école du rire toi. Avant de poser la question bien
sur que j’ai regardé la doc et j’ai fais une recherche sur google …
Je suis pas complètement a coté la plaque
J’ai suivi cette doc qui explique comment chargé un document Yaml
http://yaml4r.sourceforge.net/doc/page/loading_yaml_documents.htm
Je crois que je fais a peu pres ce qu’ils font
readme = YAML::load( File.open( ‘README’ ) )
Le 27 nov. 06 à 02:20, Alexis B. a écrit :
<%= form_tag (enseignements_path, :multipart => true ) %>
#flash [:notice] = fiche_ens[“titre”]
Railsfrance mailing list
[email protected]
http://lists.rubyonrails.fr/mailman/listinfo/railsfrance
Bolo M.
[email protected]
http://blog.developpez.com/index.php?blog=30
Bolo_M
November 27, 2006, 3:57pm
4
Bolo, s’il te plaît, modère tes paroles.
Admet que tu poses beaucoup de questions ici dont la réponse t’est
donné sous forme de lien vers une documentation (très souvent
officielle).
Si certains sont exaspérés, ils peuvent parfois te rudoyer, mais garde
tes réflexions comme “tu as fait l’école du rire”, car tout ce que tu
gagneras c’est que les quelques uns qui prennent encore la peine de te
répondre ne le feront plus du tout.
Sur ce, je t’invite à relire attentivement les différentes
documentations, dont celle que t’as donné Alexis.
Bolo_M
November 27, 2006, 3:57pm
5
Hello,
Bolo M. a écrit :
Je crois que je fais a peu pres ce qu’ils font
readme = YAML::load( File.open( ‘README’ ) )
Alors, primo, tu lis un champ de type file. Si tu examines la doc de
Rails, tu verras qu’un tel champ est sérialisé comme IO, pas comme
String, puisqu’il peut s’agir de n’importe quel contenu binaire. Tu
essaies donc de faire un File.open sur un IO, pas sur un String. En
somme, ton File.open est globalement inutile.
C’est tant mieux d’ailleurs, car faire un open sans garantir le close,
ce n’est pas tip top. Voici un meilleur code quand tu n’as qu’un nom de
fichier et que tu dois donc l’ouvrir toi-même (tiré directement de la
rdoc) :
File.open(‘ton_nom_de_fichier’) do |f|
ton_resultat = YAML::load(f)
# ton code…
end
En utilisant un bloc de traitement comme argument supplémentaire à
l’appel de File.open, tu garantis la fermeture de l’IO quoiqu’il arrive
(exception ou non) : c’est plus clean, et plus court qu’un
begin/rescue/end manuel
'HTH
Bolo_M
November 27, 2006, 3:59pm
6
J’y connais rien en YAML, mais je pense qu’on doit pouvoir trouver la
réponse ici …?
URL:http://yaml4r.sourceforge.net/doc/page/parsing_yaml_documents.htm
Sinon, regarde la doc de StringIO
URL:http://ruby-doc.org/core/classes/StringIO.html (s’il faut, il faut
faire une espèce de #flash [:notice] = fiche_ens[“titre”].gets , j’sais
pas moi !)
Bon courage…!
++
Benjamin
Bolo M. a écrit :
Bonjour,
J’essaye de lire le contenu d’un fichier
[…]
Bolo_M
November 27, 2006, 4:05pm
7
Benjamin Cabé a écrit :
J’y connais rien en YAML, mais je pense qu’on doit pouvoir trouver la
réponse ici …?
URL:http://yaml4r.sourceforge.net/doc/page/parsing_yaml_documents.htm
Lol… Je t’ai envoyé en lien le même pointeur que tu citais
initialement ^^ Tsss…
J’imagine donc que le pb est bien au niveau du File.open comme semblent
l’indiquer mes petits camarades… Sorry !
Bolo_M
November 27, 2006, 4:05pm
8
Le 27 nov. 06 à 10:56, Guillaume “Zifro” DESRAT a écrit :
Bolo, s’il te plaît, modère tes paroles.
Moi je doit modérer mes paroles …
Admet que tu poses beaucoup de questions ici dont la réponse t’est
donné sous forme de lien vers une documentation (très souvent
officielle).
Je cherche toujours avant de poser des questions, Je ne pose aucune
question sans avoir chercher un minimum même si tu penses le contraire .
Si certains sont exaspérés, ils peuvent parfois te rudoyer, mais garde
tes réflexions comme “tu as fait l’école du rire”, car tout ce que tu
gagneras c’est que les quelques uns qui prennent encore la peine de te
répondre ne le feront plus du tout.
Tu sais j’ai le meme sentiment c’est fatiguant à chaque fois de se
faire prendre de haut, si cette mailing list n’est pas destiné au
débutant ou personne ayant des questions dites le.
Je ne poserais plus de question…
Tu me dis de lire la doc, je vais pas non plus lire toute la doc en 5
jours, je vais rien comprendre …
Sur ce, on laisse tomber
Désolé si j’était agressive
a+
Railsfrance mailing list
[email protected]
http://lists.rubyonrails.fr/mailman/listinfo/railsfrance
Bolo M.
[email protected]
http://blog.developpez.com/index.php?blog=30
Bolo_M
November 27, 2006, 4:11pm
9
Alors, primo, tu lis un champ de type file. Si tu examines la doc de
Rails, tu verras qu’un tel champ est sérialisé comme IO, pas comme
String, puisqu’il peut s’agir de n’importe quel contenu binaire. Tu
essaies donc de faire un File.open sur un IO, pas sur un String. En
somme, ton File.open est globalement inutile.
D’accord je comprends mieux.
En utilisant un bloc de traitement comme argument supplémentaire Ã
l’appel de File.open, tu garantis la fermeture de l’IO quoiqu’il
arrive
(exception ou non) : c’est plus clean, et plus court qu’un
begin/rescue/end manuel
'HTH
Maintenant que je regarde mon code je me demande. Je peux faire ca
file = params[:document][:file]
YAML::load(file.read)
Je te remerice
–
Christophe P. aka TDD
[email protected]
Railsfrance mailing list
[email protected]
http://lists.rubyonrails.fr/mailman/listinfo/railsfrance
Bolo M.
[email protected]
http://blog.developpez.com/index.php?blog=30