我正在使用这个教程从你的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属性来指定。