我将 Select2 与 Rails 和 Mongoid 一起使用,并且我在服务器端使用 Sunspot Solr 进行搜索。我正在尝试通过 solr 过滤来自 mongo 的数据,通过 ajax 请求获取该数据并根据父子层次结构对结果进行分组。我无法弄清楚的是,当我搜索一个孩子时,如果有多个子结果,则父类别会出现多次。请阅读以下内容以获取更多信息:
这是我在 Mongo DB 中的数据
{“_id”:ObjectId(“5209eb465a721ae827c661de”),“title”:“Bina Kanalizasyon Tesisatı”,“parent”:“Su Tesisatçılığı”,“path”:“sutesitati/kanalizasyon”}
{“_id”:ObjectId(“5209eb465a721ae827c661df”),“title”:“Daire Temiz Su Tesisatı”,“parent”:“Su Tesisatçılığı”,“路径”:“sutesisati/temizsu”}
{“_id”:ObjectId(“5209eb465a721ae827c661e0”),“title”:“Musluk Tamiri”,“parent”:“Su Tesisatçılığı”,“path”:“sutesitati/musluktamiri”}
这是我的 Rails 模型
class Category
include Mongoid::Document
include Sunspot::Mongoid2
searchable do
text :title
end
field :title, :as => :title_textp
field :parent
field :path
end
这是我的 Rails 控制器
class CategoriesController < ApplicationController
respond_to :html, :json
def list_styles
search = Category.search do
fulltext params[:q]
end
search = Category.search { keywords params[:q]; paginate :page => params[:page], :per_page => params[:page_limit] }
@results = search.results
@total_lines = search.total
@categories = @results
respond_with @categories
end
end
这是我的哈姆尔观点
= f.label :category
= f.hidden_field :category, class: 'input-block', placeholder: "Lütfen almak istediğiniz hizmet türünü seçiniz"
这是我试图弄清楚的Javascript
$('#itinerary_category').select2({
minimumInputLength: 3,
ajax: {
url: "/categories/list_styles",
dataType: 'json',
quietMillis: 100,
data: function (term, page) {
return {
q: term,
page_limit: 10,
page: page,
};
},
results: function (data) {
var results = [];
$.each(data, function(index, item){
results.push({
text: item.parent,
children: [{id: item._id, text:item.title}]
});
});
return {
results: results
};
}
}
});
当我运行服务器并进行搜索时,对于包含一项的组,它的工作正常
但是,当我进行显示多个项目的搜索时,组名(“Su Tesisatı”)也会显示两次。
我不希望组名显示两次,而且我不知道如何进行更改。我想要一个像
Su Tesisatçılığı
Daire Temiz Su Tesisatı
Bina Kanalizasyon Tesisatı
我不擅长js,无法弄清楚如何解决它。有人可以帮我吗?我认为我提供的示例还增加了关于在 select2 中对远程数据进行分组的讨论,并清楚地说明了如何将 select2 与 rails+mongoid+solr+ajax 一起使用。如果有人可以清除这一点,那么这将使 select2 更强大,因为网络上几乎没有明确的示例可以使其与 ajax 远程数据进行分组。任何帮助将不胜感激。