rails jquery tokeninput 返回“不是函数”

Posted

技术标签:

【中文标题】rails jquery tokeninput 返回“不是函数”【英文标题】:rails jquery tokeninput returns "not a function" 【发布时间】:2013-07-15 15:31:08 【问题描述】:

我正在尝试按照 Ryan Bates Railscast nbr 258 将 tokeninput 集成到我的小 Rails 应用程序中。

因此,

我在vendors目录中添加了tokeninput文件

然后我更改了我的 application.js 文件:

//
//= require jquery
//= require jquery_ujs
//= require jquery.tokeninput
//= require bootstrap
//= require chosen-jquery
//= require jquery_nested_form
//= require bootstrap-datetimepicker.min
//= require_tree .

然后我在文件 categories.js.coffee 中添加了这段代码

jQuery ->
  $('#company_category_list').tokenInput('/categories.json',
    theme: 'facebook'
    prePopulate: $('#company_category_list').data('load')
  )

当我转到我的表单时,浏览器控制台会说:

TypeError: $(...).tokenInput is not a function
[Break On This Error]   

prePopulate: $('#company_category_list').data('load')

我一直在寻找几个小时,但我没有找到这个错误的原因。资产管道似乎正确加载了 jquery.tokeninput 文件。

任何帮助,欢迎提出建议!

【问题讨论】:

对不起,我不能helo,但我遇到了同样的问题 我昨天晚上可以解决它。由于 Rails 预编译资产,Jquery 加载了两次。也许您可以检查 jquery 的双重加载... 谢谢,我也是这样解决的。 您好,您能解释一下您是如何解决这个问题的吗?你做了什么来防止 jquery 加载两次? 是的,我不再在 dev 中预编译,我从我的公共文件夹中删除了预编译的资产。您可以将 Heroku 设置为每次推送时自动预编译。实际上 Heroku 默认会这样做。 【参考方案1】:

总结一下:

我遇到的问题是因为我曾经预编译了我的资产,然后决定即时编译:

在开发模式下调试并不方便 Heroku 在推送代码时自动管理预编译

预编译在我的公共文件夹中创建了资产的缩小版本。

当我运行我的网站时,所有的 javascript 文件都被加载了两次:一次来自公用文件夹,一次来自正常流程。

我刚刚删除了我的公用文件夹中的内容,它解决了我的问题。

【讨论】:

感谢您的跟进!我无法删除我的答案,因为它已被接受,但我已对你的答案投了赞成票,并在我的评论中添加了一条评论,以确保任何需要此答案的人都能看到你的阐述。

以上是关于rails jquery tokeninput 返回“不是函数”的主要内容,如果未能解决你的问题,请参考以下文章

rails3中的jquery tokeninput javascript

如何在 Rails 中使用 jquery tokeninput?

jQuery-tokeninput 失败:“术语”未定义?

使用没有默认“名称”的 jquery TokenInput

jquery tokenInput如何将ajax调用url动态更改为脚本

jQuery Tokeninput:只读不工作