在 development 下一切正常,重启 rails 后可以正常显示。 本人菜鸟一枚,刚接触 rails,很多地方不懂,搜这个问题搜了一上午也没找到解决办法。不知道具体问题出在哪里。 图片不显示,但是 console 里也不报错
App 9850 stderr: ActionController::RoutingError (No route matches [GET] "/assets /users/1/thumb/2014-07-19_09_07_09%E7%9A%84%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE. png"):
log 提示这个错误
#3 楼 @Rei = image_tag(@information.avatar.url(:thumb)) 就这一句 而且我现在试了试部署到 nginx 上,如果多刷新几遍有时候也可以刷新出来
最近我遇到了类似的问题,我来说一下自己的看法。
在 production 中运行 Rails,通常是有另外的 Server App 的,如 Apache 和 Nginx,它们可以完成对静态资源的请求响应,并将对动态资源的请求转发给真正的 Rails 程序,让 Rails 来处理。
在 development 模式中,Rails 程序跟上面提到的静态资源服务器没半点关系,所以一个rails s
命令之后,针对 localhost:3000 的各种请求就全靠 Rails 程序本身了,而 Rails 程序又是依赖 routes.rb。
Rails 的设置参数中有一项:config.serve_static_assets
,该参数是针对 Rails 程序中包含的静态资源,如图片,如果设为true
,Rails 中的 rack 就可以响应所请求的静态资源,否则就会遇到 Routing Error。
需要注意的是,该参数在 production 中需设为false
。
#13 楼 @tianlitao assets 是个特别的目录,可以看看 http://guides.ruby-china.org/asset_pipeline.html