拥有一个应该显示产品/经理列表的rails应用程序。在搜索了高低之后,我得到了响应,发现我需要将一个paremeter传递到包含该列表的控制器中。
def manager_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
Javascript
$.ajax({
url: "/managerlist",
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);
我对ruby和javascript的了解并不是最高的。但是我知道以下列表= User.all.map。收集所有用户full_name并连接它。几个小时以来我一直试图弄清楚如何将var'term'作为参数准确地传递给我的用户控制器。因此,当我运行rails应用程序并搜索特定的经理或产品时,它将显示单个记录而不是整个列表。
答案 0 :(得分:1)
因为,您正在尝试实现自动完成功能,我假设您搜索以给定模式开头的名称。
控制器看起来像这样:
def manager_list
matching_users = User.where(['full_name like ?', "#{params[:term]}%"])
matching_names = [].concat(matching_users.map(&:full_name).sort{|a,b| a[0]<=> b[0]}).to_json
render :json => matching_names
end
另外,term: request.term
对我来说听起来不对。我不确定,您从UI中获取搜索词的位置。请验证。
答案 1 :(得分:0)
你在Controller内的manager_list方法吗?
以下是您的控制器的外观:
class UserController < ActionController::Base
def manager_list
var term = params[:term]
... // work with your parameter
end
end
如果你只能从这得到1个结果......我会将它重命名为getManager,因为你不会得到一个列表。
如果term是用户模型中的字段,则可以调用动态查找器!! 像这样的东西:
User.find_by_term!(term)
希望我回答你的问题!
此致