У меня есть предварительный просмотр прикрепленного изображения в моей форме обновления.Проблема возникает, когда пользователь получает ошибки проверки в поле вложения.В этом случае URL-адрес миниатюры изображения становится таким, как если бы изображение было загружено без каких-либо ошибок (оно показывает имя файла, который не был сохранен на сервере).
Вот как я получаю URL-адрес изображения в моем представлении: <%= image_tag(@product.photo.url(:medium)) %>
.
Контроллер:
def update
@product = Product.find(params[:id])
@product.update_attributes(params[:product]) ? redirect_to('/admin') : render(:new)
end
def edit
@product = Product.find(params[:id])
render :new
end
Модель:
class Product < ActiveRecord::Base
<...>
@@image_sizes = {:big => '500x500>', :medium => '200x200>', :thumb=> '100x100>'}
has_attached_file :photo, :styles => @@image_sizes, :whiny => false
validates_attachment_presence :photo
validates_attachment_content_type :photo, :content_type => ['image/jpeg', 'image/jpg', 'image/png', 'image/gif'], :message => I18n.t(:invalid_image_type)
validates_attachment_size :photo, :less_than => 1.megabytes, :message => I18n.t(:invalid_image_size, :max => '1 Mb')
after_post_process :save_image_dimensions
<...>
end
UPD: Самое простое решение - добавить @photo_file_url = @product.photo.url(:medium)
в действие обновления контроллерадо @product.update_attributes
и <% @photo_file_url ||= @product.photo.url(:medium) %>
в представлении.