【发布时间】:2015-04-03 11:28:10
【问题描述】:
我还在学习 Rails,如果这个问题听起来很业余,我很抱歉。我在 Ubuntu VM、Passenger + Nginx 上运行 Rails。我已经运行了asset:precompile,它似乎成功且没有错误。但是,当我在生产环境中启动服务器并尝试访问该页面时,我得到了
[INFO ] GET "/images/pages/home/index/features/healthy_big.jpg" for 202.189.127.97 at 2015-04-03 19:00:06 +0800
[FATAL]
ActionController::RoutingError (No route matches [GET] "/images/pages/home/index/features/healthy_big.jpg"):
文件被编译到我的public/assets/pages/home/index/features/目录下的healthy_big-5fb165905a0d689780f44dbb9b178f00.jpg。
奇怪的是,其他一些也经过哈希处理的图像可以完美加载而没有问题。例如文件landing_1.jpg,在public/assets/pages/home/index 中变成了landing_1-cd89a8ce37aab0ebffb9529b7ec430ae.jpg,完美地显示出来。我尝试展示这两张图片的方式都是通过image_tag:
= image_tag("pages/home/index/features/healthy_big.jpg", alt: t('views.templates.home.index.img_alts.healthy'))
= image_tag('pages/home/index/landing_1.jpg')
问题的原因可能是什么?我猜 Rails 应该会自动找到散列资产,尽管请求了原始名称?还是我需要重新编译等。
提前致谢!
【问题讨论】:
标签: ruby-on-rails asset-pipeline rails-routing sprockets