问题 在rails可安装引擎中添加资产路径?


我该如何添加 vendor/assets/javascripts/mymountableengine 要么 vendor/assets/stylesheets/mymountableengine 到我的可安装引擎的资产路径?我希望能够在我的可安装引擎的带有sprockets的application.js / application.css文件中要求这些文件夹中的文件。

Rails 3.2.2

谢谢。


3215
2018-04-19 08:27


起源

默认情况下会添加引擎资产的Afaik路径。 [本答案]提供了有关该主题的更多信息。您是否尝试在应用清单中要求引擎资产? - KL-7
你的链接坏了=)。我可以访问app / assets中的资产,但我手动添加了vendor目录,并希望将其包含在路径中。我没有在应用程序的清单中添加引擎的资产,我只是加载它们 javascript_include_tag 'engine/application.js'  - 这很好用,我得到了所有的资产 app/assets但是,当我尝试从中请求文件时 vendor/assets 在 engine/application.js 我收到一个错误,该文件不存在。 - Yeggeps
啊,对不起,我的意思是 这个答案。 - KL-7
谢谢,但这不是我真正想要的,我需要我的文件 engine/vendor/assets/ 在 application.js/application.css。如果我放 //= require fileinvendorassets 我收到一个错误,该文件不存在(因为引擎/供应商不在加载路径中) - Yeggeps


答案:


原来他们已经装好了!只需将它们放在错误的目录中: engine/vendor/assets/javascripts/engine  - 把它们放入 engine/vendor/assets/javascripts 使他们需要。对于其他人,请检查 Rails.application.config.assets.paths 看看哪些路径被加载,我相信引擎使用父Sprockets环境,所以要添加路径才能使用 Rails.application.config.assets.paths << "path/here"


8
2018-04-20 14:09



这让我疯狂和奔跑 rails console 然后 puts Rails.application.config.assets.paths.join "\n" 帮我发现我没有包含默认的供应商文件夹。谢谢! - Jondlm


我喜欢这个:

module MyEngine
  class Engine < ::Rails::Engine

    config.assets.paths << File.expand_path("../../assets/stylesheets", __FILE__)
    config.assets.paths << File.expand_path("../../assets/javascripts", __FILE__)
    config.assets.precompile += %w( my_engine.css )

  end
end

5
2018-01-30 10:00



注意:请务必使用<<而不是+ = here。至于Rails 4.2“+ =”,至少从我的经验来看,将无声地失败并打破你的应用程序而不会抛出任何错误。 - engineerDave
是的,我们应该使用with添加元素到数组,而不是替换它 precompile 没关系。 - Pavel Evstigneev