2010-09-03 4 views
1

J'ai une page qui montre une carte Google. Je voudrais utiliser Javascript pour aller chercher plusieurs points dans ma base de données et les placer comme marqueurs sur la carte. Donc, le flux est:Meilleure pratique pour l'interaction rails-javascript?

  1. Javascript appelle une action Rails avec des paramètres.
  2. Rails interroge la base de données.
  3. Rails renvoie la réponse.
  4. Javascript met à jour la page (Rails ne peut pas faire cela car il doit être conscient de l'objet de carte JS).

Quelle est la meilleure pratique actuelle pour mettre en œuvre un tel scénario? Je sais que je peux utiliser un Prototype Ajax.Request pour appeler l'action Rails mais comment appeler la fonction Javascript qui met à jour la page lorsque l'action Rails renvoie ses résultats? Dois-je mettre à jour du HTML caché et faire écouter un écouteur d'événement? Ou y a-t-il un meilleur moyen?

Répondre

3

Vous avez quelques options.

1) Votre requête ajax peut être de type 'script' qui vous permettra d'écrire un fichier .js action_name que votre application rails rendra. Cela a accès à tous vos éléments de page (il n'est pas susceptible d'avoir accès à votre objet carte mais à moins que ce soit public)

2) Mes préférences sont d'avoir votre requête javascript pour les données json (type 'json') qui alors vous permet d'utiliser ces données à votre guise dans votre JS. Je n'utilise pas de prototype mais le flux général serait.

  • votre carte initialize
  • requête pour certaines données JSON utilisant ajax
  • rails reponds_to faire (par exemple les emplacements avec lat/long.) | F | f.json {render: json => some_hash} fin
  • dans votre rappel ajax (retour en javascript), parcourez les données json et ajoutez des points à votre carte de manière appropriée. (ou faites ce que vous voulez)
Questions connexes