【问题标题】:Displaying a var using autocomplete in ruby on rails在 ruby​​ on rails 中使用自动完成显示 var
【发布时间】:2011-08-15 14:10:02
【问题描述】:

尝试在自动完成中显示按“术语”过滤的列表

我有一个使用 jquery-ui 自动完成功能的 rails 3 应用程序。我已经到了可以搜索用户列表的地步。但是,当我键入指定用户的前几个字母时,会出现整个列表(不确定这是否是我的 Javascript 或控制器内的 project_list 的问题),此时应该只出现一个用户。但我不希望它这样做。据我了解,我必须使用 var term 并通过它过滤我的列表,但是我不知道该怎么做,代码如下。

用户控制器.rb

def project_list  
   list=User.all.map{|i|i.full_name}
   arr= [].concat(list.sort{|a,b| a[0]<=>b[0]}).to_json
   render :json =>arr
end

应用程序.js

    $("#tags").autocomplete({

      minLength: 2,

    source: function(request, response) {

        $.ajax({

            url: "/managerlist",

            dataType: "json",

            data: {

                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);



            }

        });

    }

});

}

【问题讨论】:

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


    【解决方案1】:

    所有用户都被加载到您的控制器中调用User.all 而不是这个,您应该将参数传递给您的控制器,然后执行选择。

    【讨论】:

    【解决方案2】:

    我可能会错过一些东西,但是

    $("#tags").autocomplete({
     minLength: 2,
     source: "/managerlist"
    });
    

    应该足够了。现在我从来没有做过任何红宝石,但似乎在你的红宝石函数中你从来没有读过ajax作为参数发送的“术语”,也从来没有用它过滤你的结果。我的猜测是您应该使用类似的内容进行过滤:list.grep(/params[:term]/)。 (ps:再次抱歉,我从来没有做过任何红宝石......)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-14
      • 2012-06-08
      • 1970-01-01
      • 2014-07-13
      • 1970-01-01
      • 2017-06-02
      相关资源
      最近更新 更多