Rails 3不会在显示方法的资源的公用文件夹中查找

时间:2012-06-26 20:58:16

标签: ruby-on-rails-3 routing get paperclip

在我的节目视图中,每当我尝试使用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指向我的图像,它在我的节目视图上工作正常,所以我不认为这是一个权限问题。

2 个答案:

答案 0 :(得分:7)

答案相当简单,我无法相信Rails是如此挑剔但我需要在路径的开头包含一个正斜杠:

"thumbnails/fish.jpg"

变为

"/thumbnails/fish.jpg"

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

答案 1 :(得分:2)

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

config.serve_static_assets = false

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

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

以下是关于类似问题的SO ticket