Jquery令牌输入自动完成功能无法在带有rails 3的facebook friends数组上运行

时间:2011-10-16 19:22:09

标签: jquery ruby-on-rails ruby ruby-on-rails-3

我正在使用本教程从您的Facebook好友处获取自动填充的文本字段: http://railscasts.com/episodes/258-token-fields?autoplay=true

我在js控制台中遇到了这个错误:

未捕获的TypeError:无法调用未定义的方法'replace' highlight_termjquery.tokeninput.js:609 $ .TokenList.selected_dropdown_itemjquery.tokeninput.js:628 jQuery.extend.eachjq​​uery.js:641 populate_dropdownjquery.tokeninput.js:627 run_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" %>

轨:

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

我从这个阵列中回来了:[“Shlomi Caduri”,“Shlomit Harth”]

doweet.rb:

  attr_reader :doweet_member_tokens

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

正确附加了js和css文件。

问题是,当我搜索一个名字时,我看不到结果,如果我去manhost:3000 / membership .json?q = asdf我看到...我认为问题出在JS中。 ..

我做错了什么?

非常感谢,

加仑

2 个答案:

答案 0 :(得分:3)

也遇到这个问题,它与模型列名称有关。 Jquery TokenInput在其json响应中需要一个ID,NAME对的数组。如果您尝试访问的列名称为其他名称,或者您的json响应仅包含名称,则会出现替换错误。

答案 1 :(得分:1)

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

如果您的json结果没有要在drowdown中显示的'name'属性,请确保使用propertyToSearch属性指定。