Строка в кодировке Base64 в файл (Ruby on Rails) — неопределенный метод «распаковать» Ошибка

В одном из моих контроллеров Rails я пытаюсь взять строку в кодировке Base64, декодировать ее и записать в файл (.png). Вот мой код:

def create_character
    @character = Character.new(params[:character])
    @base64 = params[:base64]
    File.open("app/assets/images/characters/#{@character.name.gsub(/\s+/, "")}-#{@character.author_name.gsub(/\s+/, "")}.png", 'wb') do |f|
        f.write(Base64.decode64(@base64))
    end

    if @character.save
        flash[:notice] = "Character created."
        redirect_to(:action => 'share')
    else

Я получаю следующую ошибку:

undefined method `unpack' for #<ActiveSupport::HashWithIndifferentAccess:0x1044b22d8>

Что здесь происходит не так?

Редактировать: одна ДЕЙСТВИТЕЛЬНО странная вещь заключается в том, что код для записи файла отлично работает в консоли rails, но не при запуске приложения.


person Trav McKinney    schedule 30.05.2012    source источник
comment
Какой результат вы получите, когда зарегистрируете или распечатаете переменную @base64?   -  person sarnold    schedule 30.05.2012


Ответы (2)


Похоже, вы пытаетесь передать хеш в метод декодирования. Вы уверены, что не должны делать @base64 = params[:character][:base64]?

person Nick Colgan    schedule 30.05.2012

У меня была ошибка unpack, когда я изменил тип данных со строки на текст.

person Kirk Powell    schedule 22.07.2014