6

每当我尝试使用 image_tag 构建器显示图像时,在我的显示视图中,rails 不会在我的显示视图内的公共文件夹中查找图像...

例如:

<%= image_tag "thumbnails/fish.jpg" %>

会产生这个:

ActionController::RoutingError (No route matches [GET] "/uploads/thumbnails/fish.jpg"):

我正在为我的上传模型使用回形针 Gem,出于安全原因,我将上传保存到与公用文件夹不同的文件夹,是的,这个显示视图确实发生在上传控制器中......

在我的上传模型中,我使用这一行将上传内容保存到非公共文件夹:

has_attached_file :upload,  :path => ":rails_root/:class/:id/:basename.:extension",
                            :url => ":rails_root/:class  /:id/:basename.:extension"

耙路线:

upload GET    /uploads/:id(.:format)                                                                 {:action=>"show", :controller=>"uploads"}
       PUT    /uploads/:id(.:format)                                                                 {:action=>"update", :controller=>"uploads"}
       DELETE /uploads/:id(.:format)                                                                 {:action=>"destroy", :controller=>"uploads"}
              /download/:id(.:format)                                                                {:controller=>"uploads", :action=>"download"}

编辑 注意:如果我明确地制作一个 img 标签并将 src 指向我的图像,它在我的显示视图上工作正常,所以我认为这不是权限问题。

4

2 回答 2

7

答案相当简单,我不敢相信 Rails 如此挑剔,但我需要在路径的开头包含一个正斜杠,如下所示:

"thumbnails/fish.jpg"

变成

"/thumbnails/fish.jpg"

我仍然很好奇为什么这只是非索引视图的问题......

于 2012-07-03T19:49:11.473 回答
2

您可能需要将此行更改为 true:

config.serve_static_assets = false

在 environment/*.rb 文件中(例如 development.rb)。

或者我已经看到这是相关目录的权限问题,因此目录上的 CHMOD 777 可能会解决它/为您指明正确的方向。

这是关于类似问题的SO 票

于 2012-06-27T05:28:16.367 回答