我在jQuery上有这个块,目前它生活在我的index.html.erb中,效果很好。我有很多像这样的片段,我想移出视图,并进入一些其他文件或文件来清理它们。这是我的代码段
$("#request_artist").autocomplete({
source: function(req, add){
$.getJSON('<%= ajax_path("artistName") %>', req, function(data) {
var suggestions = data.suggestions;
add(suggestions);
});
},
});
问题是上面的getJson调用我使用rails helper来给我指向该位置的路径,当我将此代码添加到application.js时它会失败,因为它不知道它是什么。所以我的问题是有没有地方放置这些代码并清理我的index.html.erb
答案 0 :(得分: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 :(得分: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');
我不太确定如何将其集成到自动完成代码中。但我猜这可行:
$("#request_artist").autocomplete({
source: function(req, add){
$.getJSON($(this).attr('data-url'), req, function(data) {
var suggestions = data.suggestions;
add(suggestions);
});
},
});