2010-09-19 11 views
0

Je possède ce morceau sur jQuery et actuellement son vivant dans mon index.html.erb et il fonctionne bien. J'ai beaucoup d'extraits comme ça que je veux sortir des vues et dans un autre fichier ou fichiers pour les nettoyer. Voici mon extraitOù dois-je mettre ce jQuery dans une application rails

$("#request_artist").autocomplete({ 
     source: function(req, add){ 
      $.getJSON('<%= ajax_path("artistName") %>', req, function(data) { 
     var suggestions = data.suggestions; 
       add(suggestions); 
      }); 
     }, 
    }); 

Le problème est que est l'appel getJSON ci-dessus j'utilise une aide de rails pour me donner le chemin de l'emplacement et quand j'ajouter ce code à application.js échoue car il ne marche pas savoir ce que c'est. Donc, ma question serait là est un endroit pour mettre ce code et nettoyer mon index.html.erb

Répondre

1

Dans votre index.html.rb:

<script type="text/javascript"> 
    var artistNameUrl = '<%= ajax_path("artistName") %>'; 
</script> 

Et dans un fichier séparé js:

$('#request_artist').autocomplete({ 
    source: function(req, add) { 
     $.getJSON(artistNameUrl, req, function(data) { 
      var suggestions = data.suggestions; 
      add(suggestions); 
     }); 
    } 
}); 
1

ce que je fais pour résoudre votre extrait:

$("#request_artist").autocomplete({ 
    source: function(req, add){ 
     $.getJSON('<%= ajax_path("artistName") %>', req, function(data) { 
      var suggestions = data.suggestions; 
      add(suggestions); 
     }); 
    }, 
}); 

Je voudrais vous assurer que l'élément, avec l'identifiant request_artist a également un attribut data-url correctement réglé sur ajax_path("artist_name"). Vous vous assurez que cet attribut est rempli correctement dans la vue.

plus rubis est nécessaire à l'intérieur de votre javascript, il peut simplement utiliser le réglage de l'attribut data-url. Je ne suis pas tout à fait sûr comment intégrer cela dans le code autocompleter. Mais je suppose que cela fonctionnerait:

$("#request_artist").autocomplete({ 
    source: function(req, add){ 
     $.getJSON($(this).attr('data-url'), req, function(data) { 
      var suggestions = data.suggestions; 
      add(suggestions); 
     }); 
    }, 
}); 
Questions connexes