我正在尝试在 jquery 中实现自动完成的类别版本。
这是我需要重新创建并传递给我的视图的数组类型:
var data = [
{ label: "anders", category: "" },
{ label: "andreas", category: "" },
{ label: "antal", category: "" },
{ label: "annhhx10", category: "Products" },
{ label: "annk K12", category: "Products" },
{ label: "annttop C13", category: "Products" },
{ label: "anders andersson", category: "People" },
{ label: "andreas andersson", category: "People" },
{ label: "andreas johnson", category: "People" }
];
目前,我的控制器从数据库中获取所有食物并创建了一个新数组,该数组仅包含原始数组中对象的一个属性。
我需要在这个新创建的数组中获取多个属性...
这是我的控制器中的样子:
@foods = Food.order(:name).where("name like ?", "%#{params[:term]}%")
render json: @foods.map(&:name)
该代码仅发送每个食物对象的名称属性。我需要它来发送名称和类型,以使 jquerys catcomplete 工作。
我怎样才能做到这一点?
我尝试在 irb 中使用以下一些内容来查看结果(没有@ obv):
@foods.map(&:name) is the same as @foods.map do {|t| t.name}
@foods.map do |t|
t.name
t.type
end
@foods.collect do |t|
@foods.each_slice(2).map {|name, type| Array.new(name, type)}
@foods.each_slice(2).map {|n, t| n.name, t.type }
@foods.map do |t|
@foods.map do |i|
i.name
end
@foods.map do |p|
p.name
end
end
可能还有十几个其他变体......
这是我传递数组的方式:
看法:
<%= text_field_tag 'search_food_text_field', nil, data: { catcomplete_source: search_foods_path } %>
Foods_Controller
def search
@foods = Food.order(:name).where("name like ?", "%#{params[:term]}%")
render json: @foods.map do |food|
{name: food.name, type: food.type }
end
end
食品.js
$(function() {
$( "#search_food_text_field" ).catcomplete({
source: $("#search_food_text_field").data('catcomplete-source')
});
});
我很感激任何帮助。谢谢