【问题标题】:Unable to require a js file from a gem in asset pipeline无法从资产管道中的 gem 获取 js 文件
【发布时间】:2017-10-11 14:23:36
【问题描述】:

我有一个本地宝石。还有一个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' 

【问题讨论】:

  • 尝试:/= 需要 autocomplete_locations/location_autocomplete> 而不是 //= 需要 autocomplete_locations/locationAutocomplete
  • 你可以试试 //= 需要 autocomplete_location
  • @prasanthrubyist 试过,找不到文件错误
  • @LuisMenjivar 你试过这个吗?它不起作用。
  • 检查您的文件名并确保您的文件在供应商文件夹中

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    现在我可以在 rails 项目中使用我的资产了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-23
      • 2020-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-10
      • 1970-01-01
      相关资源
      最近更新 更多