首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么Rails不能找到我的asset?

为什么Rails不能找到我的asset?
EN

Stack Overflow用户
提问于 2018-04-12 06:34:54
回答 2查看 0关注 0票数 0

在生产模式下,Rails似乎无法从asset管道中找到任何预编译的asset。

我在CentOS的RVM内部使用rails 3.2.0和ruby 1.9.3。没有额外的网络服务器与此应用程序结合运行。

运行后

代码语言:javascript
复制
rake assets:clean
rake assets:precompile

然而在运行时,这是我看到Rails尝试提供的:

代码语言:javascript
复制
Started GET "/assets/application-892c6227e631daf9a8e041b1d4d002ec.css" for 75.149.58.169 at 2012-03-14 11:42:43 -0700

ActionController::RoutingError (No route matches [GET] "/assets/application-892c6227e631daf9a8e041b1d4d002ec.css"):

所有对asset的引用如下所示:

代码语言:javascript
复制
//css:
.class {
  background: url(asset.png) no-repeat;
}

//erb:
<%= image_tag "asset.png" %>
<%= link_to "page", :class => "class" %>

production.rb中的相关设置:

代码语言:javascript
复制
config.serve_static_assets = false
config.assets.enabled = true
config.assets.compress = true
config.assets.debug = false
config.assets.compile = false
config.assets.digest = true

application.rb的设置:

代码语言:javascript
复制
config.assets.enabled = true
config.assets.version = '1.0'
EN

回答 2

Stack Overflow用户

发布于 2018-04-12 14:43:55

似乎

代码语言:javascript
复制
config.serve_static_assets = false

只要Rails应用程序不在Apache或nginx后面运行,就是一个不正确的设置

票数 0
EN

Stack Overflow用户

发布于 2018-04-12 16:15:03

我遇到了同样的问题,但我注意到你的样式表指向文件的非指纹非缓存版本。如果正在使用asset管道,为了利用它,需要使用指向文件的指纹缓存版本的帮助程序。要做到这一点,你需要将erb嵌入到你的css文件中,或者使用sass。

正确(使用sass):

代码语言:javascript
复制
.class
  background: image-url('asset.png') no-repeat

参阅此处:guides.rubyonrails.org/asset_pipeline.html#coding-links-to-assets

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档