Rails, Ajax et éditeur de cartes - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Rails, Ajax et éditeur de cartes (/showthread.php?tid=5157) |
RE: Rails, Ajax et base de données - Sephi-Chan - 09-09-2010 Oui Popayan, c'est vide. Tu peux mettre des trucs si tu veux dedans, mais généralement ce sera mieux en utilisant les images de fond. Niahoo, dans mon cas, on ne récupère pas les données : c'est le serveur qui génère du Javascript prêt à l'emploi et Prototype l'interprète car quand la réponse du serveur a un Content-Type propre à Javascript, il sait qu'il doit évaluer la réponse (mais — même si ça n'a pas de sens — on peut forcer l'option evalJS à false dans la requête). L'autre solution est de renvoyer du JSON et de "construire" le HTML côté Javascript, dans le onSuccess de la requête Ajax, c'est un poil plus économique en bande passante mais c'est moins simple et ça cause des duplications de code. Sephi-Chan RE: Rails, Ajax et base de données - niahoo - 09-09-2010 oui c'est chiant de générer du HTML en javascipt. je l'ai eu fait sur mon site consacré à eve online, en plus j'apprenais jQuery donc c'est des document.createElement() mélangés à des $('...').inner('<table>blabla</table>'); la honte quoi. mais bon ça tourne parfaitement. Cool le coup du content type, ça fonctionne uniquement avec prototype ou tu sais si jquery le fait aussi ? donc si j'ai bien pigé, si je réponds à ma requete ajax comme ceci : Code PHP :
l'alert() sera exécutée simplement par l'appel de Code : new Ajax.Request(tileUrl, { c'est pratique RE: Rails, Ajax et base de données - popayan - 09-09-2010 Ok, mais comme je n'ai pas encore fait de css pour cette appli... je rajoute juste "= image_tag("terrains/#{tile.tile_type.terrain}.png")" dans _tile.html.haml et ca sera déja pas mal Sinon, ca commence à ressembler à quelque chose Me reste un problème de route: quand je dépose une tuile sur une case, dans ma console du server j'ai: Code : Started POST "/maps/1/tiles/3.js" for 127.0.0.1 at .... RE: Rails, Ajax et base de données - Sephi-Chan - 09-09-2010 Je ne suis pas sûr que jQuery fasse ça. En général je fais :
Et le plus souvent, je construis le HTML côté serveur. Ça produit une réponse un peu plus lourde mais mon code reste DRY.
Sephi-Chan RE: Rails, Ajax et base de données - popayan - 10-09-2010 Après 1 bonne soirée de recherche, je suis toujours coincé sur cette erreur de route... je pense que ca devrait appeller l'action update, mais même avec tous mes essais rien ne fonctionne... RE: Rails, Ajax et base de données - Sephi-Chan - 10-09-2010 C'est normal. Regarde la sortie de ta commande rake routes. Et colle là ici (j'insiste :p). Puis compare-la avec le log de l'appel Ajax que tu nous a collé : Citation :Started POST "/maps/1/tiles/3.js" for 127.0.0.1 at .... Pour exécuter l'action update, il faut que la méthode soit PUT ! Normalement le code que je t'ai donné pour lancer la requête Ajax utilise bien la méthode PUT. Cf. la documentation de Prototype : Citation :method (String; default post): The HTTP method to use for the request. The other common possibility is get. Abiding by Rails conventions, Prototype also reacts to other HTTP verbs (such as put and delete) by submitting via post and adding a extra _method parameter with the originally-requested method. Sephi-Chan RE: Rails, Ajax et base de données - popayan - 10-09-2010 ben justement, j'ai bien la ligne qui devrait correspondre ( map_tile PUT /maps/:map_id/tiles/:id(.:format) { :action=>"update", :controller=>"tiles" } ) reste à voir pourquoi j'ai un POST au lieu d'un PUT? RE: Rails, Ajax et base de données - Sephi-Chan - 10-09-2010 Parce que ta requête Ajax foire. C'est côté Javascript qu'il faut chercher. Essaye en mettant manuellement la méthode à utiliser (mais d'après la documentation, c'est ce que Prototype devrait faire…) :
Sephi-Chan RE: Rails, Ajax et base de données - popayan - 10-09-2010 toujours la même chose... j'avais bien vu la doc de prototype. j'ai essayé en enlevant le method: "post" mais ca ne change rien. edit: trouvé : https://prototype.lighthouseapp.com/projects/8886/tickets/289-allow-put-delete-and-other-http-methods-on-ajax-requests par contre, j'ai encore une erreur 'undefined local variable or method 'html_for_tile'' RE: Rails, Ajax et base de données - Sephi-Chan - 10-09-2010 Essaye d'ajouter un filtre pour afficher les paramètres reçus :
Sephi-Chan |