2013-03-18 2 views
1

Commençons à travailler sur un serveur Rails/HAML qui utilise Bootstrap et JQuery sur le frontal. Toutes les pages sont générées côté serveur (HAML), puis nous utilisons JQuery ici et là pour donner une impression Web 2.0 lorsque les utilisateurs effectuent des actions.Rails, HAML et JQuery

Nous avons dans quelques endroits un html complexe généré en javascript après que nous faisons un appel AJAX pour obtenir des données du serveur. C'EST À DIRE. Dans le cas où nous avons une table, les utilisateurs peuvent effectuer des actions sur les lignes de la table. Une telle action consiste à retirer une rangée de la table et tirer dans une autre rangée. Dans le cas d'une autre ligne, nous obtenons les données JSON du serveur et dans le succès d'AJAX, nous utilisons les données JSON pour générer la nouvelle ligne (HTML) et l'animer dans la table.

Mon problème avec ceci est que les lignes de la table sont plutôt complexes et générées à deux endroits, le serveur (HAML), et en javascript. Cela signifie que chaque fois que je veux changer un peu la table (ajouter une classe css ou changer la façon dont une ligne ressemble), j'ai besoin de changer le code à deux endroits, le serveur et le client.

Ceci est un système hérité et je suis coincé avec les cadres que j'ai (pourrait être en mesure de convaincre les gens d'en tirer dans un autre). Que puis-je faire pour résoudre ce problème?

Penser le meilleur moyen est que le serveur génère toujours le code HTML. C'EST À DIRE. au lieu de renvoyer des données JSON lorsque j'ai besoin d'ajouter une nouvelle ligne, renvoyez le code HTML pour la nouvelle ligne. De cette façon, je peux utiliser le même côté du serveur de fichiers HAML pour générer les lignes initiales et toutes les nouvelles lignes.

Tout cela est assez nouveau pour moi, est-ce le meilleur/seul moyen?

Merci d'avance.

+0

Soit vous faites ce que vous faites, générer le code HTML sur le serveur, utilisez un moteur de templating, ou de créer une fonction pour générer les lignes pour vous. – Ohgodwhy

+0

Je trouve * beaucoup * plus facile de rendre HTML sur le serveur et de le passer avec un '$ .html()' que de le rendre de json. http://stackoverflow.com/questions/15399229/ajax-with-ruby-on-rails-simple-view-refresh/15399379#15399379 illustre cette technique. – bdares

Répondre

0

La meilleure façon que j'ai trouvé est de générer le côté serveur de haml partials et le retour.

haml :some_partial, :layout => false 

Puis dans le succès jquery:

function(data) { 
    html = $(data); 
    ... 
}