在我的Rails应用程序中,我有css和js,每个动作都是唯一的。
所以用户#new有自己的CSS。它的名称为users_new.css.scss
。
我将我的应用程序部署到Heroku,而Heroku并没有加载任何资产。您可以看到错误here。我如何解决这个问题,以便Heroku正确预编译并加载资产?
我通读了Heroku's docs on using the asset pipeline,但没有看到任何解决方案。
答案 0 :(得分:1)
预编译
问题在于timelines_index.js
不是precompiled:
你可以告诉这个问题的方法是,当你在layout
中调用资产时(我认为你正在使用正确的路径助手),Rails会自动引用最新的预编译版本该文件(因此application.js
附加MD5 fingerprint)
我相信您需要将自定义文件添加到precompiled_assets
数组中:
#config/environments/production.rb
Rails.application.config.assets.precompile += ['timelines_index.js']
这将使Rails能够单独预编译这些资产,允许您在布局中调用它们:
#app/views/layouts/application.html.erb
<%= javascript_include_tag "timelines_index" %>
必须对您希望在布局中调用的所有自定义资源文件执行此操作。
正如Anil
所述,您可能希望使用Rails的manifest
系统将所有资产文件连接到各自的application
文件中。
这将消除将文件附加到Rails precompile
数组的需要,允许您为各种资产调用单个文件:
#app/assets/javascripts/application.js
//= require_tree .
答案 1 :(得分:0)
添加你的Gemfile
gem 'rails_12factor', group: :production