我有一个名为application.js的文件在app/assets/javascripts
// = require libs/jquery-retina
// = require libs/jquery.popupoverlay
// = require libs/messg
// = require site_logic/application
// = require serviceworker-companion
// = require i18n
// = require i18n-rules
// = require lazysizes.min
i18n实际上是我已经安装的gem在application。js文件所在的文件夹中没有任何i18n文件我已经在浏览器中看到该文件已成功连接到application。js
我想知道这怎么可能?因为正常情况下文件应该在同一个目录下。
Sprockets将查看Rails.application.config.assets.paths
中指定的路径,其中包括app/assets
,lib/assets
和vendor/assets
,它还包括Rails引擎添加的任何路径。
引擎内的资产工作方式与完整的资产相同应用程序。因为引擎类继承自Rails:: engine,所以应用程序将知道查找资源在引擎的
app/assets
和lib/assets
目录。
你正在使用的宝石是作为引擎编写的,当Bundler.require(*Rails.groups)
在config/application.rb
中需要它们时,它们会被挂载。
:
- https://guides.rubyonrails.org/asset_pipeline.html资产组织 <
- https://guides.rubyonrails.org/engines.html资产/gh>