为 Rails 5 中的每个控制器定义资产预编译


我已经熟悉Rails了,

但我下载了一个Rails演示应用程序以查看一些最佳实践。

我的问题是关于资产管道的,这仍然让我感到困惑。在我的其他 Rails 应用程序中,我为每个控制器提供了一个 JS 和一个 CSS 文件,我可以在那里编写任何我想要的东西并且它可以工作。

在我的演示应用程序中,我找到了这两行:

<!-- =============== VIEW VENDOR STYLES ===============-->
   <%= stylesheet_link_tag params[:controller] %>
<!-- =============== VIEW VENDOR SCRIPTS ===============-->
   <%= javascript_include_tag params[:controller] %>

当我启动我的应用程序时,我收到一个错误,要解决此问题,我必须添加这两行

Rails.application.config.assets.precompile += %w( xxx.css )
Rails.application.config.assets.precompile += %w( xxx.js )

对于我的初始值设定项/资产.rb 文件的每个控制器。

有点烦人。这到底是怎么回事?

取决于您下载的"演示应用程序"...无论如何 - 它可能在应用程序中具有"require_tree".js删除或禁用。这样你的Javascript既不会被包含,也不会被预编译。要恢复默认行为,您需要具有

//= require_tree .

application.js末存在。这同样适用于 css 资产。只有那里的行看起来像:

 *= require_tree .

application.css.scss 的顶部评论块的末尾

请注意,在

生产环境中使用这些行会使所有文件包含并编译为一个大文件,以后无论是否需要,该文件都将在应用程序的每个页面上使用。有一些解决方法,但这是默认行为。由于您引用的"演示应用程序"(很可能)禁用了它,因此禁用require_tree行可能有一些原因。

最新更新