2015-03-04 2 views
0

У меня есть форма и кнопка, которая отображает предварительный просмотр страницы до ее отправки. Я могу отображать все атрибуты моей модели, но не могу, ради моей любви, получить приложение скрепки для отображения. создать действие для моей модели Событий как следующий, если кнопка предварительного просмотра щелкнул, я сделать вид preview.html.erb и отображать мои атрибуты событий для пользователя:Rails 4 display paperclip temp file

def create 
@event = Event.new(event_params) 
if params[:preview] 
    render 'preview' 
    return 
else 
    #process normally and save 
end 
end 

Модели событий имеет прикрепленный файл «образом» через Скрепку:

class Event < ActiveRecord::Base 
has_attached_file :image, :styles => {:gallery => "640x320#", :thumb => "100x100#"} 
end 

по мнению preview.html.erb Я пытаюсь отобразить временный файл, который Скрепка создает перед сохранением, однако это не работает. В представлении я использую это:

<%= image_tag @event.image.queued_for_write[:gallery].path %> 

Однако, когда страница предварительного просмотра отображается, изображение отсутствует. Может ли кто-нибудь помочь мне с отображением изображений Paperclip до сохранения модели? Как я могу получить доступ к временному файлу и отобразить его в представлении?

Спасибо!

ответ

0

Использование Javascript. Ваша форма должна выглядеть следующим образом:

<%= image_tag @user.avatar, id: 'avatar-preview' %> 
<%= f.file_field :avatar, onchange: "readUploadImage(this)" %> 

Ваш JS:

function readUploadImage(input) { 
    if (input.files && input.files[0]) { 
     var reader = new FileReader(); 
     reader.onload = function (e) { 
      $('#avatar-preview') 
       .attr('src', e.target.result) 
       .width(300) 
       .height(300); 
     }; 

     reader.readAsDataURL(input.files[0]); 
    } 
} 
+0

Не забывайте, что входной файл поля являются вложенными полями, поэтому, когда я хочу добавить несколько фотографий я в конечном итоге с несколькими поля ввода с тем же идентификатором «#avatar_preview». – Alistair

+0

В этом случае просто создайте элемент предварительного просмотра image_tag для каждого изображения, которое вы хотите загрузить, и выполните соответствующие обновления. –

Смежные вопросы