Я пытаюсь найти основную загрузку файла с помощью хелпера формы в Rails, используя edge rails guide (я использую rails 4.0.0.rc1 и ruby 1.9.3p362) прежде чем я попаду в «Паперклип» или «CarrierWave».Загрузка основного файла в рельсах с помощью формы helper
Я положил метод для загрузки прямо с помощью #create в контроллере, мой план состоял в том, чтобы создать новую запись с столбцом изображения, в котором хранится имя моей загрузки.
Мой #create имеет это:
File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'w') do |file|
file.write(uploaded_io.read)
end
Когда я следую за направляющие рельсы именно загрузка файлов происходит, я могу увидеть файл в моем public/uploads
, но я получаю ошибку кодирования в браузере:
Encoding::UndefinedConversionError
"\x89" from ASCII-8BIT to UTF-8
Параметр \ x89 является точка на суффикс имени файла? т.е.: .png
Я нашел сообщение StackOverflow, в котором говорится, чтобы добавить «b» в File.open, который исправляет ошибку кодирования, но я получаю другую ошибку. Это StackOverflow post покрывает мою ошибку, но я считаю, что следую за решением и все еще имею ошибку.
File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'wb') do |file|
file.write(uploaded_io.read)
end
Я получаю следующий TypeError, но без ошибки кодирования. С другой стороны, загрузка файлов.
TypeError: can't cast ActionDispatch::Http::UploadedFile to string:
Любые предложения по поводу того, что я делаю неправильно? Было бы хорошо, чтобы увидеть эту работу, прежде чем я перейду к PAPERCLIP или CW
У меня такая же ошибка, используя carrierwave. Есть предположения? – ctilley79
Я еще не проверил несущую волну, извините. – kaplan
Я закончил тем, что использовал paperclip, в котором было гораздо больше рельсов 4 – ctilley79