Я пытаюсь загрузить ajax, работая с рельсами 3.1.3 и скрепкой.
Я нашел решение моей проблемы Rails 3 получает необработанные данные постов и записывает их в файл tmp , но, используя это, я получаю 'encoding undefined conversion
error "\xFF" from ASCII-8BIT to UTF-8
.
Ошибка возникает в строке @user.photo = @user.photo = QqFile.parse(params[:qqfile], request)
Я не редактировал код, предоставленный в предыдущем ответе, но я включу его здесь, чтобы вам не приходилось переключаться назад и вперед.
скрепка со списком драгоценных камней, возвращает 2.5.2, 2.4.5, 2.3.8
мой контроллер
def create
@user = User.new(params[:user])
@user.photo = QqFile.parse(params[:qqfile], request)
if @user.save
return render :json => @user
else
return render :json => @user.errors
end
end
qq_file.rb
# encoding: utf-8
require 'digest/sha1'
require 'mime/types'
# Usage (paperclip example)
# @asset.data = QqFile.new(params[:qqfile], request)
class QqFile < ::Tempfile
def initialize(filename, request, tmpdir = Dir::tmpdir)
@original_filename = filename
@request = request
super Digest::SHA1.hexdigest(filename), tmpdir
fetch
end
def self.parse(*args)
return args.first unless args.first.is_a?(String)
new(*args)
end
def fetch
self.write @request.raw_post
self.rewind
self
end
def original_filename
@original_filename
end
def content_type
types = MIME::Types.type_for(@request.content_type)
types.empty? ? @request.content_type : types.first.to_s
end
end