尽管被硬编码,图像仍未显示 - Rails

时间:2014-07-11 05:44:32

标签: ruby-on-rails ruby-on-rails-4.1

Rails 4.1
Ruby 2.1.1

我认为我有以下内容:

<% img_loc = "#{Rails.root}/app/assets/images/cw/agent/avatar/#{agent.id.to_s}/thumb_#{a.img_name}"%>
<td><%= image_tag "#{img_loc}" %></td>

当我在生产服务器上运行时,图像不显示。我的生产日志显示以下内容:

INFO -- : Started GET "/home/dnc/app/assets/images/cw/agent/avatar/11/thumb_myimage.jpg"
FATAL -- : 
ActionController::RoutingError (No route matches [GET] "/home/dnc/app/assets/images/cw/agent/avatar/11/thumb_myimage.jpg"):   

但是当我检查时,文件/home/dnc/app/assets/images/cw/agent/avatar/11/thumb_myimage.jpg确实存在。有任何想法吗?

1 个答案:

答案 0 :(得分:1)

路径助手

有人不得不质疑你为什么不使用asset path helpers来访问images目录:

<% img_loc = image_path("cw/agent/avatar/11/thumb_myimage.jpg") %>

-

Image Tag

或者,可能更合适一点,你应该考虑使用image_tag和相对路径,因为这将加载你需要的图像而不必硬编码:

<%= image_tag "cw/agent/avatar/11/thumb_myimage.jpg" %>

enter image description here


我理解你的推理(你想直接访问图片),但我没有得到你的方法。 Rails具有非常强大的相对路径系统,可以根据需要灵活地访问图像