Rails3 - Проблема сохранения образа base64 с помощью скрепки? - PullRequest
1 голос
/ 20 февраля 2011

Это похоже на проблему, опубликованную здесь , но это решение не работает для меня.Может быть, это потому, что я не передаю данные правильно.

Я извлекаю скриншоты из Flash и отображаю их на странице с помощью Jquery:

   $SNAPSHOT_PREVIEW.attr("src","data:image/jpg;base64," + imgData);
   $HIDDEN_BASE64_STRING.val(imgData);

У меня все было хорошо и работалогде вы можете сохранить изображение в Rails во Flash, но Flash не позволит вам вызывать действие после публикации без нажатия пользователем кнопки по соображениям безопасности.Имеет смысл.В любом случае, теперь я не могу заставить Paperclip сохранить изображение из формы HTML:

#(photo has_attached_file:image)
@photo = params[:photo]
data = StringIO.new(Base64.decode64(params[:base64_string]))
data.class.class_eval { attr_accessor :original_filename, :content_type }
data.original_filename = "screenshots.jpg"
data.content_type = "image/jpg"
@photo.image = data

Выдает ошибку:

NoMethodError (undefined method `image=' for #<ActiveSupport::HashWithIndifferentAccess:0x8c2e420>):

Как мне нужно изобразить изображение base64данные во вложение скрепки?

Для получения бонусных баллов нужно ли скрытое поле для передачи данных, или есть ли разумный, совместимый с браузером способ использования изображения src в качестве значения формы?

1 Ответ

1 голос
/ 20 февраля 2011

У вас есть код:

@photo = params[:photo]

params - это просто хеш, поэтому позже, когда вы вызовете @photo.image, Rails выдаст ошибку. Возможно, вы хотите:

@photo = Photo.new(params[:photo])

вместо

...