2012-01-14 106 views
4

我试图跟随Ryan Bates CarrierWave Rails演员制作http://railscasts.com/episodes/253-carrierwave-file-uploads,但有些事情自他做出以来似乎已经发生了变化。Rails:如何显示上传的图像

瑞恩上绘画类安装载波

class Painting < ActiveRecord::Base 
    attr_accessible :gallery_id, :name, :image 
    mount_uploader :image, ImageUploader 
end 

,然后以显示他这样做

<%= image_tag painting.image_url%> 

图像I假设CarrierWave提供painting方法。我在User类

class User < ActiveRecord::Base 

    attr_accessible :name, :email, :image 
    mount_uploader :image, ImageUploader 
end 

安装载波当我试图做到这一点

<%= image_tag user.image_url %> 

当我尝试这样做

<%= image_tag User.image_url %> 

我我得到了一个"undefined local variable or method for 'user'"错误信息

得到undefined method image_url'for#Class:0x0000010248e560>`

后者的错误消息让我感到惊讶,因为当我做rake routes这表明我这个网址

image GET /images/:id(.:format)  {:action=>"show", :controller=>"images"} 

这是文件路径上传图像

/uploads/user/image/3/cadman.png 

,但我想不出了解如何使用Rails方法显示它(即不仅是IMG SRC)

+0

你让你的用户变量一个新的用户对象?我知道这似乎很明显,但你永远不知道。 – 2012-01-14 20:05:02

+0

Rails脚手架在新方法中执行它@user = User.new – Leahcim 2012-01-14 20:08:45

+0

当然,只是检查您是否做了这一步骤。 – 2012-01-14 20:29:08

回答

7

使用实例变量@user而不是局部变量(即未定义):

<%= image_tag @user.image_url%>