我有来自太阳黑子的数据到select2(显示控制器的list_styles方法)。我可以在新的提供者表单上使用select2搜索并保存多个类别,没有任何问题,但是当我尝试从编辑提供程序表单上的数据库加载数据时,它没有显示。尝试initselection方法并检查文档/ stackoverflow以获取适合我的应用程序的initselection方法但无法对其进行排序。创建了一个名为list_categories的新控制器方法,但没有成功。任何人都可以评论我正确的方法吗? 谢谢。
Jquery
$('#provider_category').select2({
minimumInputLength: 3,
multiple: true,
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 hashtable={};
var results = \[\];
$.each(data, function(index, item){
if (hashtable\[item.parent\]===undefined) {
hashtable\[item.parent\]={text:item.parent, children:\[\]};
results.push(hashtable\[item.parent\]);
}
hashtable\[item.parent\].children.push({id:item._id,text:item.title});
});
return {
results: results
};
},
initSelection: function(element, callback) {
return $.ajax({
type: "get",
url: "/categories/list_categories",
dataType: 'json',
data: function (term, page) {
return {
q: term,
page_limit: 10,
page: page,
};
},
success: function(data){
}
}).done(function(data) {
//console.log(data);
return callback(data);
});
}
}
});
控制器 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] }
@categories = search.results
respond_with @categories
end
def list_categories
search = Provider.find "5299b5dcdd506322c4000091"
@category = search.category
x = Category.find @category
search = Category.search { keywords x.title; paginate :page => params[:page], :per_page => params[:page_limit] }
@categories = search.results
respond_with @categories
end
end
答案 0 :(得分:2)
这就是婴儿的方式!
jquery
},
initSelection : function (element, callback) {
var data1 = [];
jQuery(element.val().split(",")).each(function () {
$.ajax({
type: "get",
url: "/providers/list_categories",
async: false,
dataType: 'json',
data: { id: $("#provider_id").val()},
success: function(category){
$.each(category, function(i, obj) {
data1.push({id: this._id, text: this.title});
});
}
});
});
callback(data1);
}
});
<强>位指示强>
def list_categories
@provider = Provider.find params[:id]
arr = @provider.category.split(",")
@category = Category.where(:_id.in => arr)
respond_to do |format|
format.json { render :json => @category}
end
end