Rails资产位于子目录中,无法在生产中加载

时间:2016-07-05 06:35:44

标签: css ruby-on-rails production-environment

目前我的事件CSS位于app/assets/stylesheets/pages/events.scss,在开发模式下,它看起来很好并且资源已加载。但在制作时,看起来这些页面根本没有加载。我不知道如何解决这个问题。我看过Rails 4: assets not loading in production,但我对config.assets.precompile += %w( *.js ^[^_]*.css *.css.erb)并不熟悉,因为看起来路径本身并不适用于制作。

app / assets / stylesheets / application.scss:

/*
 * This is a manifest file that'll be compiled into application.css, which will include all the files
 * listed below.
 *


 *#= require bootstrap-wysihtml5
 *#= require rails_bootstrap_forms
 *#= require jquery.jcrop
 *= require custom
 *= require_self 
*/

@import "bootstrap-sprockets";
@import "bootstrap";
@import "scaffolds";

app / views / events / index.html.erb:

<% content_for :head do %>
  <%= stylesheet_link_tag "pages/events", :media => "all" %>
<% end %>

应用程序/资产/样式表/页/ events.scss

@import "globals/helpers";
@import "vendors/animate";

.events-bar {
/*  a[class*="btn"] {
  height: 36px;
  display: inline-block;
}*/
#toggleBar {
  margin-top: 14px;
}
.btn-dashboard { 
   background-color: #fdf9ff;
   color: $eventsColour !important;  
   &:hover {
     background-color: $eventsColour-dark !important;
   }
 }
}

它很难调试,因为它在开发中工作得很好,而不是在生产中。看起来子目录中的所有文件(app / assets / stylesheet / pages / * .scss)都不能在生产中使用。任何见解都会有所帮助,谢谢。

3 个答案:

答案 0 :(得分:1)

您只需要将事件添加到预编译资产列表中,因为它未使用application.scss编译您想要的格式

config.assets.precompile += %w( pages/events.scss )

然后

bundle exec rake assets:precompile

答案 1 :(得分:0)

在你的application.scss中,你应该添加:

*= require pages/events

运行bundle exec rake assets:precompile

让我知道它是否修复了错误,或者它是否没有错误消息?

答案 2 :(得分:0)

我在!pip install tb-nightly上遇到过同样的问题
资产文件位于-

Rails version  - 5.2.3
  

将所有图像添加到app/assets/images/sub-folder 中,但在生产中未加载,而在本地运行良好。

css-

中的图像位置
sub-folder

这就是我所做的-

url(./sub-folder/b2.jpg) 集-

/config/environments/production.rb

最初是 config.assets.compile = true ,我只是在服务器上推送了代码,发现所有内容都按需运行!

希望也能为您服务!!!