2010-09-19 88 views
0

我在jQuery上有这个块,目前它的生活在我的index.html.erb中,它运行良好。我有很多这样的片段,我想移出视图和其他一些文件或文件来清理它们。这里是我的代码段我在哪里把这个jQuery放在rails应用程序中

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

的问题是,是的getJSON调用上面我使用的是轨道帮手给我路径的位置,当我将此代码添加到application.js中失败,因为它不知道是什么它是。所以我的问题是有没有把这个代码和清理我的index.html.erb

回答

1

在你index.html.rb的地方:

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

,并在单独的js文件:

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

我做些什么来解决您的片段:

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

我会确保该项目,ID为request_artist也有属性data-url正确设置为ajax_path("artist_name")。您确保在视图中正确填写此属性。

在你的javascript里面不需要更多的ruby,它可以使用属性data-url的设置。

var url = $(this).attr('data-url'); 

我不太知道如何整合到了autocompleter代码。但我猜测,这将工作:

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