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 %>