2009-03-06 10 views
1

Je n'arrive pas à comprendre comment utiliser les variables initialisées dans le contrôleur, par exemple, au script jQuery (saisie semi-automatique dans mon cas). Donc, j'utilise Rails et obtenir ma liste d'auteurs. Comment puis-je les refernce dans le script jQuery où je » d aime utiliser le plugin jQuery autocomplete comme ça:.comment passer un tableau d'objet (Utilisateurs dans mon cas) au script jQuery du contrôleur

[code] $ (document) .ready (function() { $ ("# BOOK_AUTHOR") autocomplete (url ou data, options); }); [/ code] Je devrais donc passer mon tableau d'auteurs du controler au script. Comment faire ça?

Répondre

3

Vous pouvez le faire comme ceci.

<script type="text/javascript"> 
    var authors = <%= Author.find(:all).to_json -%>; 
    $(document).ready(function() { 
     $("#book_author").autocomplete(authors, options); }); 
</script> 

La chaîne JSON sera évaluée directement en JavaScript en tant qu'objet. Le résultat final sera dans ce cas, quelque chose comme

var authors = [{"author": {"id": 1, "name": "John"}}, {"author": {"id": 2, "name": "Jack"}}]; 

qui sera alors un tableau d'objets faciles à manipuler en JavaScript. Pour que cela fonctionne avec la saisie semi-automatique, vous devrez probablement faire un peu plus de traitement pour l'obtenir dans le format souhaité.

Rappelez-vous simplement que la chaîne JSON comprendra le modèle à moins que vous avez activé le avec

ActiveRecord::Base.include_root_in_json = false 
Questions connexes