Paris on Rails 2008

Ouverture de session

Commentaires récents

Syndication
Flux XML

PB pour parser du XML - Flux RSS

PB pour parser du XML - Flux RSS
Posté par cissou06 le Mardi, 10 Juin, 2008 - 11:50am. Débuter avec Rails

Bonjour!

J'ai un contrôleur "groups". Lorsque je tape dans mon navigateur http://127.0.0.1:3000/groups.xml j'obtiens l'arbre xml correspondant (grâce à la ligne format.xml { render :xml => @groups } qui se trouve de base dans ma méthode index). Est-il possible de récupérer certaines parties de l'xml pour les afficher dans une page html? Si oui, comment? J'ai essayer d'utiliser RSS::Parser.parse mais sans succès apparemment (j'ai un "execution expired")... Peut-être (surement même!) parce que je passe en paramètre une url au lieu du chemin d'un fichier?

En fait j'aimerais récupérer un flux rss pour chaque group (et non un flux rss pour l'ensemble des groups) et pouvoir disposer les informations obtenues pour chacun dans des pages différentes... Il y a peut-être une méthode?

Merci d'avance!



[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | sujet précédent | sujet suivant | envoyer par email ]

Options d'affichage des commentaires
Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder" pour activer vos changements.

Sujet: 
render :xml => @group
Auteur: 
dam5s
Date: 
Mar, 10/06/2008 - 14:26

Ton action qui fait render :xml => @groups.
Elle fait un to_xml sur chaque element de @groups.
tu devrais pouvoir faire render :xml => @group
ou @group est l'un des groupes de @groups.

Par exemple un action qui ferait:

@group = Group.find(params[:id])
render :xml => @group

Mais je serais toi j'irais voir la doc de l'API pour voir ce que fait exactement le render :xml => @une_variable. Mais a mon avis elle retourne une entete xml et le résultat de @une_variable.to_xml

Ce qui par défaut pour un objet active record devrait etre ActiveRecord::XmlSerialisation.to_xml
Si cette methode ne te plait pas, implemente ta propre version de to_xml pour la classe Group.

--
Damien
http://www.webdrivenblog.com/


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
Merci pour ta
Auteur: 
cissou06
Date: 
Mar, 10/06/2008 - 18:18

Merci pour ta réponse!

Apparemment je peux bien faire render :xml => @group, je n'y avais pas pensé! Par contre je ne peux pas l'afficher dans ma page html...

Mon but étant en fait d'avoir un flux rss par group, crois-tu qu'il faille que je génère le fichier xml correspondant, que je l'enregistre qqpart pour pouvoir ensuite parser le fichier, en tirer les informations que je veux et les présenter sur ma page html? J'ai vu qu'on pouvait utiliser Builder mais je ne sais pas trop comment... J'avoue que je me fais de gros nœuds au cerveau, je ne maitrise pas très bien tout ça!

Je vais continuer à chercher mais si tu peux m'aider c'est avec grand plaisir!


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
Organisation
Auteur: 
jasperiel
Date: 
Mer, 11/06/2008 - 16:50

Ton problème n'est pas du code, mais de l'organisation.

Apparemment tu arrives très bien à générer ton XML, mais ce que tu veux c'est récup TON XML dans TON HTML. Ce n'est probablement pas impossible mais pas très malin : pourquoi alourdir le traitement de ton serveur applicatif, de ton serveur web, et peut-être du client ?

Si tu as les données au moment de rendre ton HTML, alors fais un helper, un partial ou un composant, ce que tu veux, mais ne passe pas par le XML et génère tout de suite ton HTML cible, mis en forme.


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
Heu qu'est-ce que tu entends
Auteur: 
dam5s
Date: 
Mar, 10/06/2008 - 18:33

Heu qu'est-ce que tu entends par flux rss ? parce qu'un flux rss c'est du xml, pas du html...

--
Damien
http://www.webdrivenblog.com/


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
flux rss = xml... je sais bien...
Auteur: 
cissou06
Date: 
Mer, 11/06/2008 - 09:53

... Il faut donc que j'arrive à avoir une arborescence xml par group pour avoir le flux rss correspondant. Mais comme je n'arrive pas à intégrer mon render :xml dans ma page html je me demandais s'il ne fallait pas que je crée moi même le fichier xml (puisqu'il me semble que le render ne donne qu'une vue mais ne me crée pas réellement de fichier, non?) Ainsi, une fois que j'ai créé le fichier je peux le parcourir et afficher ce que je veux comme je veux dans ma page html...Cela fera bcp + de code que le render :xml mais je ne sais pas comment faire autrement...


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
Doc de Render
Auteur: 
jasperiel
Date: 
Jeu, 12/06/2008 - 10:18

LAAAAA DOOOOOOOC que diable ! TOUT est dedans !!!
Est-ce que vous feriez une opération à coeur ouvert sans savoir comment ça marche ? Le développement, c'est pareil !

http://api.rubyonrails.org/classes/ActionController/Base.html
Calling multiple redirects or renders
An action may contain only a single render or a single redirect. Attempting to try to do either again will result in a DoubleRenderError:

Tu ne peux pas faire plusieurs render dans une action...

Sauf en faisant "render_to_string", qui te donne une string, que tu peux donc mettre dans une variable pour afficher dans ta vue. CQFD.

Mais une fois encore, tes utilisateurs aiment rarement lire du XML, donc je suis quasiment certain que tu veux juste mettre tes données d'ActiveRecord dans une variable et en faire un joli affichage. Les helpers sont là pour ça. Processer une string représentant du XML dans ta vue n'a aucun intérêt sinon pourrir les perfs de ton appli.


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
Doc d'ActiveRecord
Auteur: 
jasperiel
Date: 
Jeu, 12/06/2008 - 10:28

Je suis sûr que tu ne connais pas les options d'ActiveRecord qui sauvent la vie du développeur et le rendent heureux.
http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M001376

Est-ce qu'un truc comme ça simplifierait ton travail ?
Adapte et tape-le dans la console pour voir ce que ça donne.

Employes.find(:all, :select => "anciennete, salaire",
:conditions => ["secteur = ? AND age > ? AND age < ?", 'comptables', 30, 40],
:group => "fonction")

Choisis tes champs, tes conditions, ton groupage... tout est possible et facile, certainement bien plus que parser du XML ^^;


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
Sinon tu aurais pas un
Auteur: 
dam5s
Date: 
Mer, 11/06/2008 - 16:51

Sinon tu aurais pas un exemple statuique de ce que tu veux faire pour qu'on comprenne ?

Tu sais que tu peux utiliser @group.to_xml dans une vue en erb ?

--
Damien
http://www.webdrivenblog.com/


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
Si j'ai compris, tu veux
Auteur: 
hery
Date: 
Mer, 11/06/2008 - 15:18

Si j'ai compris, tu veux afficher les données des groupes en HTML
La réponse est dans ta question !!

Tu crées une vue index.html.erb et tu affiches ça en html en utilisant ta variable @groups et non pas en xml....

A moins que tu ne veuilles faire un XML et du XSLT. Ce sont toujours des données XML mais le navigateurs va les enjoliver par des feuilles de styles.


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
Si je crée une vue
Auteur: 
cissou06
Date: 
Jeu, 12/06/2008 - 11:40

Si je crée une vue index.html.erb et que j'affiche mes données en html cela peut être une solution pour mon appli effectivement, mais du coup je ne pourrai pas avoir accès à mon flux RSS depuis Netvibes par exemple... non?

En fait je vais poser ma question autrement peut-être... Est-ce que si je veux créer un flux rss dans mon appli je suis obligée de créer un fichier xml que j'enregistre sur mon serveur? Cela voudrait dire que je serai obligée de créer un fichier xml pour chacun de mes groups... C'est peut-être la solution mais je pensais qu'il y avait une solution + "simple" (+ courte surtout!)

Etant donné que le render :xml => @workgroup génère automatiquement le xml du group (on peut voir le résultat avec l'url suivante par exemple: http://127.0.0.1:3000/workgroups/2.xml) je me disais qu'il y avait peut-être moyen de passer par cette url pour avoir un flux accessible depuis Netvibes par exemple, est-ce que ça peut fonctionner? Je ne peux pas faire le test car je suis en local sur ma machine...

J'espère que j'ai réussi à un peu mieux m'expliquer. En tout cas merci de prendre le temps pour me répondre et m'aider!


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Nouveaux liens

Sondage
Lorsque je développe avec Ruby on Rails c'est principalement sous:
Linux
37%
Mac OS X
30%
Windows
32%
(Free|Open|Net) BSD
1%
Autre...
1%
Nombre de votes: 374

Qui est en ligne
Il y a actuellement 1 utilisateur et 55 invités en ligne.

railsfrance.org - communauté francophone des utilisateurs de Ruby on Rails
[ Hébergement et ressources techniques gracieusement fournis par la SSLL Nuxos Group ]