我正在尝试在Ryan Bates Railscast nbr 258之后将tokeninput集成到我的小rails应用程序中。

因此,

我在供应商目录中添加了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 .


然后我将此代码添加到文件category.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文件。

任何帮助,建议欢迎!

最佳答案

总结一下:

我遇到的问题是由于我曾经对我的资产进行过预编译,然后决定即时进行编译:


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


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

当我运行我的网站时,所有的javascript文件都会被加载两次:一次是从公用文件夹中加载,另一次是从正常流程中加载。

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

关于jquery - Rails的jquery tokeninput返回“不是函数”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17693698/

10-11 05:10