我在哪里把这个jQuery放在rails应用程序中
问题描述:
我在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
答
在你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);
});
}
});
答
我做些什么来解决您的片段:
$("#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);
});
},
});