css - 为什么在 rails 中链接 css 中的图像时使用 ASSET_PATH 而不是 Image-url

标签 css ruby-on-rails ruby asset-pipeline precompile

首先让我说这是 Rails 最糟糕的部分。来自 .NET 背景,就像编写任何标准 HTML 页面一样编写 css 非常容易,但是,不,不是在 Rails 中,除非你做所有这些特别的废话,否则它会爆炸。

我的问题本质上是这样的:当我在 application.css 的末尾添加一个 .erb 并像这样编写 background-image 属性时,为什么我只能通过 Assets 管道加载我的图像:

background-image: url(<%= asset_path 'image.png' %>);

我不明白为什么这些不起作用(我尝试了 100 种不同的东西):

background-image: url('/assets/image.png');
background-image: url('assets/image.png');
background-image: image-url('image.png');
background-image: image-url('assets/image.png');
background-image: url(image.png);

仅供引用,这是我的生产环境,所有内容都是预编译的。通过这种方式链接,一切都在开发中:

 background-image url('/assets/image.png');

但是当我切换到生产环境并进行预编译时,任何图像或字体文件都必须转换为 ASSET_PATH 处理方法,否则图像不会显示....常见问题?

最佳答案

您的 config/environments/production.rb 文件中可能有这样的内容:

config.serve_static_assets = false

这就是它不会直接为他们提供服务的原因。

顺便说一句:我对 .NET 和 Rails 有一定的了解。其中很多只是 Rails 和其他系统之间的差异。不过,我确实理解您的沮丧。

关于css - 为什么在 rails 中链接 css 中的图像时使用 ASSET_PATH 而不是 Image-url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18700856/

相关文章:

ruby-on-rails - 提前取消作业

mysql - 运行 rake db :migrate VERSION=0 and redid the migration, 后,我丢失了数据库中的所有内容

ruby-on-rails - Ruby 哈希可以包含在 Sass 和 CoffeeScript 中,从而允许共享数据吗?

html - 如何更改 Bootstrap 切换导航颜色?

jquery - 在桌面滚动上淡入汉堡菜单

javascript - .animate() 位置覆盖手动 .offset() 分配

javascript - 单击链接时不显示表单

jquery - 如何让相同的 javascript 代码响应多个 ajax 调用?

ruby-on-rails - Jbuilder 部分路径

ruby - $LOAD_PATH 和 $: different? 怎么样