Я прочитал это хорошая статья об использовании Paperclip в приложении rails3 для захвата изображений с веб-камеры.
Я пытаюсь преобразовать его в Carrierwave (я использую его в других приложениях, которые будут обмениваться одинаковыми изображениями, поэтому я хочу быть последовательным).
То, с чем я борюсь, это как заставить Carrierwave принять файл из флеш-изображения с jpegcam . Похоже, что Paperclip больше ориентирован на файлы, а Carrierwave - больше на объект.
Вот что я пытаюсь:
У меня есть модель с установленным на ней загрузчиком carrierwave:
class Individual < ActiveRecord::Base
mount_uploader :picture, PictureUploader
И в представлении (представление «редактировать»):
#webcam
= embed{:id => 'webcam_movie'}... (the embedded flash)...
= submit_tag "Take picture", :onclick => 'webcam.snap();'
= form_for @individual, :html => {:multipart => true} do |f|
= f.text_field :firstname
= f.text_field :lastname
= f.file_field :picture
= f.submit
= content_for :javascripts do
:javascript
function upload_complete(msg) {
if (msg) {
????
} else {
alert('An error occured');
webcam.reset();
}
}
webcam.set_hook('onComplete', 'upload_complete');
Моя проблема в том, что Carrierwave на самом деле не имеет функции «загрузки», а использует объект модели. Так что я не совсем уверен, что положить в контроллер, чтобы заставить его принять файл. И как обработать обратный вызов в JavaScript. (Я попытался сделать несколько вещей, которые мне слишком неловко воспроизводить здесь. Получил объект изображения на контроллере, но не смог понять, как его обработать)
Кто-нибудь может мне помочь? Спасибо.