但我下载了一个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
行可能有一些原因。