我正在实现Jquery UI自动完成功能。我有以下代码。
Application.js
$(function() {
function log(message) {
$( "<div/>" ).text( message ).prependTo("#log");
}
$("#tags").autocomplete({
source : function(request, response) {
$.ajax({
url : "/projectlist",
dataType : "json",
data : {
style : "full",
maxRows : 12,
term : request.term
},
success : function(data) {
var results = [];
$.each(data, function(i, item) {
var itemToAdd = {
value : item,
label : item
};
results.push(itemToAdd);
});
return response(results);
}
});
}
});
});
项目控制器
def project_list
list=Project.all.map{|i|i.project_name}
arr= [].concat(list.sort{|a,b| a[0]<=>b[0]}).to_json
render :json =>arr
end
_form.html.erb
<input id = "tags"/>
的routes.rb
match '/projectlist' => 'projects#project_list'
我上面的代码应该做的是列出项目。但是我在firebug中遇到了以下错误。
$("#tags").autocomplete is not a function
[Break On This Error] source : function(request, response) {
我也尝试过以下示例JQuery Ui Autocomplete但没有运气并得到同样的错误:S
答案 0 :(得分:3)
我相信你的问题是你包括了jquery&amp; jquery-ui文件在视图的BODY中(在_form
部分中)。当您调用application.js
时,您可能还在HEAD中加载了javascript_include_tag :defaults
(可能在您的应用程序布局中)。相反,您应该在调用默认值之前调用jquery和ui文件 。或者,更好的是,通过在config文件夹中编辑application.rb文件,将它们包含在默认值中。
答案 1 :(得分:0)
看来虽然你已经包含了jquery ui,但它还没有被加载。检查浏览器控制台是否存在javascript错误。如果您正在使用chrome或safari,则开发人员工具的网络选项卡可能表示未加载jquery ui文件。
答案 2 :(得分:0)
正如上面评论中所述,当jquery&amp; amp; jquery ui文件未正确加载。
使用普通的HTML标记首先引用它们:
<script type="text/javascript" src="Content/jquery_core.js"></script>
<script type="text/javascript" src="Content/jquery_ui.js"></script>
...并确保在ui文件之前链接核心文件,如上所述。撤销订单也会导致错误。
答案 3 :(得分:0)
似乎我收到此错误的原因是因为我在应用程序布局文件中对'jquery'和'jquery-ui-1.8.14.custom.min'进行了排序。谢谢你的回复。