关于供应商文件夹的困惑

时间:2014-06-11 17:21:34

标签: ruby-on-rails

首先,我设置了以下链接目录:

的application.js

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .

application.css

*= require_self
*= require_tree .

但是,供应商中的简单测试文件

console.log('I\'ve been loaded,baby!');
链轮没有加载

?如果我将它移动到app / assets / js然后工作,但不是在供应商。我需要设置哪些指令才能使其正常工作?他们必须单独要求吗?

即使在开发中我是否需要预编译?

此外,images中没有vendor目录。许多第三方脚本都有演示图像。我实际上更喜欢vendor/images而不是app/assets/images。可以设置吗?

1 个答案:

答案 0 :(得分:1)

根据Rails指南

  

管道资产可以三个中的一个放在应用程序中   位置:app / assets,lib / assets或vendor / assets

确保将资产置于上述其中一个位置。

回答您的疑问:

  

如果我把它移到app / assets / js那就可以了,但不是在供应商那里。

它在那里工作是因为require_tree中指定的application.js指令加载了当前目录(application.js)中存在的所有javascript文件,即app/assets/javascripts

//= require_tree .

以上指令不会从vendor/assets/javascripts加载javascript文件,这就是vendor无效的原因。

  

我需要设置哪些指令才能使其正常工作?他们必须单独要求吗?

是的,您必须明确要求application.js

假设您有vendor/javascripts/abc_vendor.jsvendor/stylesheets/abc_vendor.css

然后在application.js中你必须添加

//= require abc_vendor

并在application.css

*= require abc_vendor
  

许多第三方脚本都带有演示图像。我实际上更喜欢他们在供应商/图像而不是app / assets / images。能够   这可以设置吗?

是。它可以设置。只需在images目录中创建文件夹vendor/assets即可。在该文件夹中添加供应商图像。假设您在abc_logo.jpg目录中添加了vendor/assets/images。重启服务器。并访问图像:

<%= image_tag "abc_logo.jpg" %>