Jquery令牌输入自动完成不工作与rails 3的facebook好友数组



我正在使用这个教程从你的facebook朋友自动完成的文本字段:http://railscasts.com/episodes/258-token-fields?autoplay=true

我在js控制台得到这个错误:

Uncaught TypeError: Cannot call method 'replace' of undefinedhighlight_termjquery.tokeninput.js: 609.TokenList.selected_dropdown_itemjquery.tokeninput.js: 628美元jQuery.extend.eachjquery.js: 641populate_dropdownjquery.tokeninput.js: 627run_searchjquery.tokeninput.js: 704美元.TokenList.ajax_params

我的代码是:

JS:

$(function() {
  $("#when").datetimepicker();
  $("#who").tokenInput("/memberships.json", {
    crossDomain: false,
    theme: "facebook"
  });
});
HTML:

<% form_for @doweet, :html => { :id => "post" } do |f| %>
<%= error_messages_for @doweet %>
<%= f.text_field :doweet_member_tokens,  :id => "who", :placeholder => "Who?" %>  
<%= f.submit "Doweet" %>
rails:

memberships.json:

q = params[:q]
@friend_members = FbGraph::Query.new("SELECT name,uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) ORDER BY name asc").fetch(current_user.token).collect { |f| f["name"] }.select { |v| v =~ /#{Regexp.escape(q)}/i  } 
respond_to do |format|
  format.html
  format.json { render :json => @friend_members }
end

我从这个数组返回像这样:[" Shlomit Caduri","Shlomit Harth"]

doweet.rb:

  attr_reader :doweet_member_tokens
  def doweet_member_tokens=(ids)
    self.doweet_member_ids = ids.split(",")
  end

js和CSS文件被正确附加。

问题是,当我搜索一个名字时,我没有看到结果,如果我手动去localhost:3000/members .json?Q =我看到了……我认为问题是在JS…

我做错了什么?

thanks a lot,

也遇到了这个问题,它与模型列名有关。Jquery TokenInput在json响应中需要一个ID, NAME对数组。如果您试图访问的列被命名为其他东西,或者您的json响应仅包含名称,您将获得替换错误。

$("#who").tokenInput("/memberships.json", {
    crossDomain: false,
    theme: "facebook",
    propertyToSearch: "yourJSONfieldname"
  });

如果你的json结果没有'name'属性显示在下拉菜单中,那么确保你使用propertyToSearch属性来指定。

最新更新