1

I'm trying to use jQuery Tokeninput as shown in Railscast #258 (revised). When I enter something in the tokeninput field, the field does not dropdown with results and I get the following javascript error: Uncaught TypeError: Cannot call method 'replace' of undefined.

My json data works fine when I do a manual query on it, and the server request looks fine. I am trying to search the content column in my issues table, so I set propertyToSearch to "content".

Here is my code:

coffeescript:

jQuery ->
$('#fact_issue_tokens').tokenInput "/issues.json"
    theme: 'facebook'
    zindex: 11001
    propertyToSearch: 'content'
    tokenValue: 'content'
    hintText: 'Enter an issue'
    preventDuplicates: true

Issue Model:

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

Issues Controller:

def index
  @issues = Issue.order(:content)

  respond_to do |format|
    format.html
    format.json { render json: @issues.tokens(params[:q]) }
  end
end

Form:

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

1 Answer 1

1

@Scott you try this

jQuery ->
  $('#fact_issue_tokens').tokenInput '/issues.json'
    theme: 'facebook'
    tokenLimit: 5
    minChars: 4
    preventDuplicates: true
    searchingText: "Enter an issue..."
    prePopulate: $('#fact_issue_tokens').data('load')

and think on your index because you are using (:content) not name might be your problem. I am bot sure why but i used title and i had a problem, i thought it was mysql or something. When you visit

http://localhost:3000/issues.json

Do you get the JSON data?

Edit.

Can you please try this for your form?

<div class="field">
  <%= f.label :issue_tokens, "Issues" %><br />
  <%= f.text_field :issue_tokens, data: {load: @fact.issues} %>
</div>
Sign up to request clarification or add additional context in comments.

5 Comments

Yes, I can get the JSON data from http://localhost:3000/issues.json I know that changing :name causes issues, but I specified 'propertyToSearch: 'content'' I thought that would change the search from :name to :content.
I changed my column name to "name", but I'm still having the same issue.
You did add the jquery.tokeninput.js and //= require jquery.tokeninput in the application.js ? Sorry to ask so many questions but i am wondering why it's causing you this error. Omhhh how does your form look like?
Yes, both js and css files are working. I'll add the form to my original post.
@Vezu : Hi Vezu and Scott, I am currently facing a strange problem with token-input. There are 2 text_fields in my view, but I can't figure out where did the duplicate come from?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.