无法在资产管道中需要来自gem的js文件

时间:2017-10-11 14:23:36

标签: ruby-on-rails ruby rubygems asset-pipeline sprockets

我有一个本地宝石。并且有一个js文件:

  app/assets/javascripts/autocomplete_location/location_autocomplete.js

现在我想在我的rails项目中使用这个gem。我能够使用它的其他ruby文件,但不能包含上面的js文件。我已经尝试将engine.rb文件放入我的gem中。仍然没有运气。

我试过

  //= require autocomplete_locations/location_autocomplete

在我的项目的application.js文件中。但是,当我启动服务器并打开任何页面时,它会抛出此错误:

 Sprockets::FileNotFound > couldn't find file 'autocomplete_locations/location_autocomplete' with type 'application/javascript' 

2 个答案:

答案 0 :(得分:1)

//= require autocomplete_locations/location_autocomplete仍然与'autocomplete_locations/location_autocomplete不同。所需的文件夹是autocomplete_locations,包含该文件的文件夹的名称是autocomplete_location。我之前的评论中没有提到这一点。如果这不能解决问题。尝试要求并测试不同的javascript文件,以确保它不是资产管道的问题。

答案 1 :(得分:1)

感谢您的建议,经过多次点击和试用后,我通过在lib / autocomplete_locations.rb中添加以下代码解决了这个问题:

  class Engine < ::Rails::Engine
    environment = Sprockets::Environment.new
    environment.append_path '../vendor/assets/javascripts'
  end

现在我可以在rails项目中要求我的资产。