Jquery 如何在select2中获取动态下拉数据

Jquery 如何在select2中获取动态下拉数据,jquery,ruby-on-rails,twitter-bootstrap,jquery-select2,Jquery,Ruby On Rails,Twitter Bootstrap,Jquery Select2,在Rails4.0中,我使用select2(引导)插件。我想在自动完成列表中生成动态数据,但列表中没有加载数据。 如果我使用下面的代码,我将得到一个类似“UncaughtTypeError:Cannotcallmethod'toUpperCase'ofUndefined”的错误 代码参考 在上面的链接中,我使用了两个名为select2.js、select2.min.js的js文件 在控制器端 def names @query = params[:q] @name_list = Keyword

在Rails4.0中,我使用select2(引导)插件。我想在自动完成列表中生成动态数据,但列表中没有加载数据。 如果我使用下面的代码,我将得到一个类似“UncaughtTypeError:Cannotcallmethod'toUpperCase'ofUndefined”的错误

代码参考

在上面的链接中,我使用了两个名为select2.js、select2.min.js的js文件

在控制器端

def names
 @query = params[:q]
 @name_list = Keyword.where("value LIKE '%#{@query}%' AND category = 'Name'").limit(15)
 @names = @name_list.collect(&:value)
 @ids = @name_list.collect(&:id)
 @id_name_pairs = Hash[@ids.zip(@names)]

 @values = []
 @id_name_pairs.each_pair do |k, v|
   hash = {}
   hash["id"] = k
   hash["value"] = v
   @values.push(hash)
 end

 respond_to do |format|
   format.html{}
   format.js {
     render :json => @values
   }
 end

end

请帮助我解决select2问题。

问题出在您的控制器上。如果不进行自定义格式化,则在json响应的值哈希中指定键名“value”,而不是指定“text”

其在文档中:

诸如此类:

@id_name_pairs.each_pair do |k, v|
  hash = {}
  hash["id"] = k
  hash["text"] = v
  @values.push(hash)
end

等等,您是否同时使用select2.js和select2.min.js?我假设它们都代表相同的库/代码,在这种情况下,你应该只使用其中一个。是的,我只是想问同样的问题。我只添加了select2.js文件,然后我得到了相同的错误。后来我添加了select2.min.js文件。你真的只需要其中一个文件,因为它们基本上做同样的事情。JS文件的.min版本意味着它是压缩的。你甚至可以用网站来解压它们,比如——压缩只是删除了你放入脚本中的所有“人性化”格式(注释、长格式变量名等),以创建一个真正精简的版本
@id_name_pairs.each_pair do |k, v|
  hash = {}
  hash["id"] = k
  hash["text"] = v
  @values.push(hash)
end