Rails 6/webpacker...如何让背景图片在开发中和 Heroku 上工作?
Rails 6/webpacker... how get background images to work BOTH in development and on Heroku?
在 Rails 6 应用程序中,我在 app/assets/images/bgs/abc.jpg
中有一个图像文件
要将该图像附加到 body
背景,我怎样才能在 application.html.haml 中的 style
标签中声明样式,使其与 相同[=29] =] 本地开发以及何时推送到 heroku?
在开发中工作,但不是 Heroku,因为我想资产处理差异:
#application.html.haml
%style
body::after {
content: "";
background: url("/assets/bgs/abc.jpg"); ### WORKS DEVT ONLY ###
background-size: cover;
background-repeat: no-repeat;
opacity: 0.12;
top: 0;
left: 0;
bottom: 0;
right: 0;
position: absolute;
background-attachment: fixed;
z-index: -1;
}
我知道我应该使用 asset_path 但 none 这些工作正在开发中:
background: asset_path("/bgs/abc.jpg");
background: asset_path("bgs/abc.jpg");
background: asset_url("/bgs/abc.jpg");
background: asset_url("bgs/abc.jpg");
那里有大量不一致的信息,有些情况下说使用 asset-url 或 asset-path,有些情况下说 asset_url 或 asset_path,甚至一些案例说使用 url(~filename.jpg),有些说使用背景:有些说背景图像。
有没有一种简单的方法可以在开发和 Heroku 上使用具有完全相同代码的背景图像?
Rails 在生产模式下将预编译资产,以便资产文件夹(和子文件夹)中的所有图像都将被预编译并保存为 public 文件夹中的 image name-fingeprint
,例如:我有一张图片 assets/images/bgs/pragmatic_programmer.jpg
,然后在 运行 命令 rake assets:precompile
之后,这张图片将变成 /public/assets/bgs/pragmatic_programmer-9aa8a13ac97f205fe891bee7c42c6e711f997186d8975d5a4106ca2fe53ccc61.jpg
。
由于图像路径更改,导致您的应用在开发模式下工作而不在生产模式下工作,您可以通过 ActionView::Helpers::AssetTagHelper#image_path
访问新编译的图像,如下所示
#application.html.haml
%style
body::after {
content: "";
background: url(= image_path("bgs/abc.jpg"));
...
}
您可以在开发模式下进行测试,只需 运行 rake assets:precompile
在启动服务器之前。
样式定义的答案是:
背景:url( asset_path("bgs/abc.jpg") );
对开发和生产都有效。
在 Rails 6 应用程序中,我在 app/assets/images/bgs/abc.jpg
中有一个图像文件要将该图像附加到 body
背景,我怎样才能在 application.html.haml 中的 style
标签中声明样式,使其与 相同[=29] =] 本地开发以及何时推送到 heroku?
在开发中工作,但不是 Heroku,因为我想资产处理差异:
#application.html.haml
%style
body::after {
content: "";
background: url("/assets/bgs/abc.jpg"); ### WORKS DEVT ONLY ###
background-size: cover;
background-repeat: no-repeat;
opacity: 0.12;
top: 0;
left: 0;
bottom: 0;
right: 0;
position: absolute;
background-attachment: fixed;
z-index: -1;
}
我知道我应该使用 asset_path 但 none 这些工作正在开发中:
background: asset_path("/bgs/abc.jpg");
background: asset_path("bgs/abc.jpg");
background: asset_url("/bgs/abc.jpg");
background: asset_url("bgs/abc.jpg");
那里有大量不一致的信息,有些情况下说使用 asset-url 或 asset-path,有些情况下说 asset_url 或 asset_path,甚至一些案例说使用 url(~filename.jpg),有些说使用背景:有些说背景图像。
有没有一种简单的方法可以在开发和 Heroku 上使用具有完全相同代码的背景图像?
Rails 在生产模式下将预编译资产,以便资产文件夹(和子文件夹)中的所有图像都将被预编译并保存为 public 文件夹中的 image name-fingeprint
,例如:我有一张图片 assets/images/bgs/pragmatic_programmer.jpg
,然后在 运行 命令 rake assets:precompile
之后,这张图片将变成 /public/assets/bgs/pragmatic_programmer-9aa8a13ac97f205fe891bee7c42c6e711f997186d8975d5a4106ca2fe53ccc61.jpg
。
由于图像路径更改,导致您的应用在开发模式下工作而不在生产模式下工作,您可以通过 ActionView::Helpers::AssetTagHelper#image_path
访问新编译的图像,如下所示
#application.html.haml
%style
body::after {
content: "";
background: url(= image_path("bgs/abc.jpg"));
...
}
您可以在开发模式下进行测试,只需 运行 rake assets:precompile
在启动服务器之前。
样式定义的答案是:
背景:url( asset_path("bgs/abc.jpg") );
对开发和生产都有效。