.autocomplete不是一个功能

时间:2011-08-10 15:19:17

标签: jquery ruby-on-rails ruby-on-rails-3 jquery-ui jquery-ui-autocomplete

我正在实现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

4 个答案:

答案 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'进行了排序。谢谢你的回复。