从rails中的其他视图/资源访问Paperclip头像?

时间:2012-06-22 03:57:03

标签: ruby-on-rails image paperclip avatar

目前我正在使用Paperclip来处理我在Rails 3中的头像上传和使用。我有一个用户资源(有控制器,模型,视图等),我上传了头像(使用用户/ new view)并且当他们将这些内容“嵌入”用户展示视图时,他们实际上传和工作。 (我得到了破碎的图像,但我认为是因为本地服务器,因为图像实际保存并在查看源代码时链接到我的应用程序中的正确路径)现在,我有另一个名为技能的资源(还有控制器,模型和视图)在视图中我也需要显示头像,但每当我尝试在技能视图中嵌入/使用用户头像时,我会收到以下错误(如果我尝试嵌入则同样的事情)另一种视图中的头像与 users / show 不同:

  

undefined method avatar'for nil:NilClass`

为什么会这样?

另外,正如我所说,当在显示视图中嵌入化身时,它们实际上是“嵌入”但我得到了损坏的图像和以下路由错误:

  

No route matches [GET] "/public/assets/users/UserID/thumb/userimage.jpg"

我在Localhost上......是因为那个? (我猜是因为“userimage”它实际上保存在应用程序的那条路径上)

有人可以解释一下这个路由错误发生了什么,以及如何在多个视图中使用头像?我用以下代码“嵌入”图像:

<%= image_tag @user.avatar.url(:thumb) %>

谢谢。

1 个答案:

答案 0 :(得分:2)

修正了问题!对于

undefined methodavatar' for nil:NilClass`

我在以下代码中删除了用户的“@”:

<%= image_tag @user.avatar.url(:thumb) %>

然后,出现以下错误:

No route matches [GET] "/public/assets/users/UserID/thumb/userimage.jpg"

我必须从用户模型中的 Url符号中删除“public”,因此它已从 这样:

:url  => "/public/assets/users/:id/:style/:basename.:extension"

对此:

:url  => "/assets/users/:id/:style/:basename.:extension"

现在图像显示(在本地环境和生产环境中),我可以从我需要的所有视图中使用它们。

希望这有助于某人。