2012-04-19 98 views
9

如何将vendor/assets/javascripts/mymountableenginevendor/assets/stylesheets/mymountableengine添加到我的可安装引擎的资产路径中?我希望能够在我的可挂载引擎的带有链轮的application.js/application.css文件中从这些文件夹请求文件。在导轨安装引擎中添加资产路径?

导轨3.2.2

谢谢。

+0

AFAIK路径引擎的资产默认添加。 [这个答案]提供了有关该主题的更多信息。您是否尝试过在应用清单中要求引擎的资产? – 2012-04-19 09:18:55

+0

您的链接已损坏=)。我确实可以访问应用程序/资产中的资产,但我手动添加了供应商目录并希望将其包含在路径中。我没有在我的应用程序的清单中添加引擎的资源,我只是用'''javascript_include_tag'引擎/ application.js''''加载它们 - 这很好用,我得到了'''app/assets'中的所有资源'',但是当我尝试从''''engine/application.js'''中的''vendor/assets''请求文件时,我得到一个文件不存在的错误。 – Yeggeps 2012-04-19 10:04:03

+0

啊,对不起,我的意思是[这个答案](http://stackoverflow.com/a/5877665/357743)。 – 2012-04-19 10:46:26

回答

8

原来他们已经加载!只要将它们放在错误的目录中:engine/vendor/assets/javascripts/engine - 将它们放入engine/vendor/assets/javascripts使其成为可能。对于其他人,只是检查Rails.application.config.assets.paths,看看哪些路径被加载,我相信引擎使用父母链轮环境,所以要加道仅使用Rails.application.config.assets.paths << "path/here"

+0

这让我疯狂并且运行'rails console'然后'放置Rails.application.config.assets.paths.join“\ n”'帮助我发现默认的供应商文件夹没有被包括在内。谢谢! – Jondlm 2014-01-06 00:28:40

5

我这样做:

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 
+0

注意:请务必在此处使用<<而不是+ =。至少从我的经验来看,Rails 4.2“+ =”会默默无闻地破坏你的应用程序而不会抛出任何错误。 – engineerDave 2015-02-27 17:58:45

+0

是的,我们应该添加元素到数组中,而不是用“预编译”替换它。 – 2015-02-27 18:33:44