我正在使用本教程从您的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.eachjquery.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中。 ..
我做错了什么?
非常感谢,
加仑
答案 0 :(得分:3)
也遇到这个问题,它与模型列名称有关。 Jquery TokenInput在其json响应中需要一个ID,NAME对的数组。如果您尝试访问的列名称为其他名称,或者您的json响应仅包含名称,则会出现替换错误。
答案 1 :(得分:1)
$("#who").tokenInput("/memberships.json", {
crossDomain: false,
theme: "facebook",
propertyToSearch: "yourJSONfieldname"
});
如果您的json结果没有要在drowdown中显示的'name'属性,请确保使用propertyToSearch属性指定。