不要在Heroku上显示背景图像。但是当地人正在努力

时间:2018-02-03 17:19:29

标签: ruby-on-rails ruby heroku background-image

我的标签:

= link_to '', root_path, class: 'items__footage'

我的选择器:

.items__footage {
  display: inline-block;
  content: '';
  width: 300px;
  min-height: 300px;
  background: url('/assets/footage_still.png') no-repeat;
  background-size: auto 100%;
}

我的图片路径为assets/images/footage_still.png。如果我指明此路径,则我的图像无法在本地运行。

我做过rake assets:precompile。但它没有帮助。

3 个答案:

答案 0 :(得分:1)

来自documentation

  

在生产环境中,Sprockets使用指纹识别方案   概述如上。默认情况下,Rails假定资产已经过预编译   并将由您的网络服务器作为静态资产提供。

     

在预编译阶段,从中生成SHA256   已编译文件的内容,并插入到文件名中   它们被写入磁盘。这些指纹名称由。使用   Rails助手代替清单名称。

因此,在生产环境中,您的所有资产都将进行预编译,并将从public/assets投放。该文件也将使用指纹重命名。所以实际上在生产中你的文件名看起来像

footage_still-908e25f4bf641868d8683022a5b62f54.png

每次文件内容更改时指纹都会更改,并且对于缓存静态资源很有用,通常称为cache busting
因此,当您对图片网址/assets/footage_still.png进行硬编码时,它会在生产中中断。为了处理这种情况,rails提供了一个名为asset url helpers的东西。
要使其正常运行,您必须将.css文件重命名为.scss,否则请更改。

background: url('/assets/footage_still.png') no-repeat;

background: image_url('footage_still.png') no-repeat;

希望这有帮助。

答案 1 :(得分:1)

如果您可以在css文件中使用ruby代码,那么请使用items_footage的背景。

background: url("<%= asset_path('footage_still.png') %>");

要在css文件中使用ruby代码,请将该文件设为filename.css.erb

答案 2 :(得分:0)

您可以使用image_url('footage_still.png')并让rails找到图片的路径

相关问题