【问题标题】:jQuery Tokeninput Error in RailsRails中的jQuery Tokeninput错误
【发布时间】:2012-05-15 12:48:27
【问题描述】:

我正在尝试使用 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 %>

【问题讨论】:

    标签: javascript jquery ruby-on-rails ruby-on-rails-3


    【解决方案1】:

    @Scott 你试试这个

    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')
    

    并考虑您的索引,因为您使用的是 (:content) 而不是名称可能是您的问题。我很确定为什么,但我使用了标题并且我遇到了问题,我认为是 mysql 或其他什么。 当您访问时

    http://localhost:3000/issues.json
    

    你得到 JSON 数据了吗?

    编辑。

    您能在表单中试试这个吗?

    <div class="field">
      <%= f.label :issue_tokens, "Issues" %><br />
      <%= f.text_field :issue_tokens, data: {load: @fact.issues} %>
    </div>
    

    【讨论】:

    • 是的,我可以从 http://localhost:3000/issues.json 获取 JSON 数据 我知道更改 :name 会导致问题,但我指定了 'propertyToSearch: 'content'' 我认为这会将搜索从 :name :内容。
    • 我将列名更改为“name”,但仍然遇到同样的问题。
    • 您确实在 application.js 中添加了 jquery.tokeninput.js 和 //= require jquery.tokeninput ?很抱歉问了这么多问题,但我想知道为什么它会导致你这个错误。哦,您的表单看起来如何?
    • 是的,js 和 css 文件都可以工作。我会将表单添加到我的原始帖子中。
    • @Vezu:嗨,Vezu 和 Scott,我目前正面临一个关于令牌输入的奇怪问题。我的视图中有 2 个 text_fields,但我不知道重复项是从哪里来的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 2013-08-18
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多