J'utilise JSON pour gérer les fonctionnalités AJAX dans mes applications de rails depuis que j'en ai entendu parler, parce que l'utilisation de RJS/rendu HTML était «mauvaise» parce qu'elle violait MVC. Le premier projet lourd AJAX sur lequel j'ai travaillé s'est terminé avec 20-30 actions de contrôleurs liés directement à des comportements d'interface utilisateur spécifiques et mon code de vue s'est propagé sur les actions du contrôleur, les partiels et les fichiers rjs. L'utilisation de JSON vous permet de conserver le code spécifique à la vue dans la vue et de parler uniquement pour afficher les actions du contrôleur agnostique/RESTful via AJAX pour obtenir les données nécessaires. Le seul casse-tête que j'ai trouvé en utilisant du JSON pur est que vous devez "rendre" le HTML via JS, ce qui dans le cas d'AJAX qui doit mettre à jour les éléments lourds du DOM, peut être très pénible. Je finis avec code long de la construction de chaîne commeMise à jour du code HTML via JSON/AJAX
// ...ajax
success: function(records){
$(records).each(function(record){
var html = ('<div id="blah">' + record.attr +
etc +
')
})
}
où etc est de 10-15 lignes de construction dynamique HTML à partir des données d'enregistrement. Outre l'ennui, un retour plus sérieux à cette approche est la duplication de la structure HTML (dans le modèle et dans le JS). * Y a-t-il une meilleure pratique pour cette approche?
(Ma motivation pour enfin tendre la main est que je suis maintenant confié la tâche de mise à jour de HTML si complexe il a fallu deux boucles imbriquées de code Ruby pour rendre en premier lieu. Duplication que Javascript semble fou.)
- Une chose que j'ai considéré est le chargement des fichiers partiels statiques directement à partir du système de fichiers, mais cela semble un peu beaucoup.
Ceci est encore un peu brouillon et vous devez en quelque sorte inclure la mise en page dans votre Javascript. J'aime vraiment le template de John Resig dans l'une des autres réponses qui sépare très clairement (surtout) l'interface utilisateur et le contrôleur. Super si Jaml travaille pour vous si :) – Jaanus