Rails: как отобразить изображение с загрузки - PullRequest
4 голосов
/ 15 января 2012

Я пытаюсь следовать вместе с Райаном Бейтсом (CarrierWave Rails Cast) http://railscasts.com/episodes/253-carrierwave-file-uploads,, но некоторые вещи, похоже, изменились с тех пор, как он сделал это.

Райан устанавливает несущую волну в классе живописи

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

и затем для отображения изображения он делает это

<%= image_tag painting.image_url%>

Я предполагаю, что CarrierWave предоставляет метод painting. Я установил Carrier Wave на класс пользователя

class User < ActiveRecord::Base

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

Когда я пытался это сделать

 <%= image_tag user.image_url %>

Я получил "undefined local variable or method for 'user'" сообщение об ошибке

Когда я попробовал это

<%= image_tag User.image_url %>

Я получил undefined method image_url 'для # Class: 0x0000010248e560> `

Это последнее сообщение об ошибке удивило меня, потому что когда я сделал rake routes, он показал мне этот URL

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

Это путь к файлу для загруженного изображения.

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

но я не могу понять, как отобразить его с помощью метода Rails (т.е. не только img src)

1 Ответ

7 голосов
/ 15 января 2012

Использовать переменную экземпляра @user вместо локальной переменной (которая не определена):

<%= image_tag @user.image_url%>
...