我正在尝试使用 Railscast #258(修订版)中所示的 jQuery Tokeninput。当我在 tokeninput 字段中输入内容时,该字段不会下拉显示结果,并且我收到以下 javascript 错误:Uncaught TypeError: Cannot call method 'replace' of undefined
.
当我对其进行手动查询时,我的 json 数据工作正常,服务器请求看起来也很好。我正在尝试搜索问题表中的内容列,因此我将 propertyToSearch 设置为“内容”。
这是我的代码:
咖啡脚本:
jQuery ->
$('#fact_issue_tokens').tokenInput "/issues.json"
theme: 'facebook'
zindex: 11001
propertyToSearch: 'content'
tokenValue: 'content'
hintText: 'Enter an issue'
preventDuplicates: true
问题模型:
def self.tokens(query)
issues = where("content like ?", "%#{query}%")
if issues.empty?
[{id: "<<<#{query}>>>", content: "New: \"#{query}\""}]
else
issues
end
end
def self.ids_from_tokens(tokens)
tokens.gsub!(/<<<(.+?)>>>/) { create!(content: $1).id }
tokens.split(',')
end
问题控制器:
def index
@issues = Issue.order(:content)
respond_to do |format|
format.html
format.json { render json: @issues.tokens(params[:q]) }
end
end
形式:
<%= form_for(Fact.new, :url => kase_facts_path(current_kase), :html => {:class => "form-
inline"}) do |f| %>
<%= f.text_field :page, placeholder: 'Page' %>
<%= f.text_field :description, placeholder: 'Description' %>
<%= f.label :issue_tokens, 'Issue tags' %>
<%= f.text_field :issue_tokens %>
<%= f.hidden_field :source_id, :value => @source.id %>
<%= f.submit 'Add Fact' %>
<% end %>