2012-05-30 20 views
5

W jednym z moich kontrolerów Rails próbuję pobrać kodowany ciąg Base64, dekodować go i zapisać do pliku (.png). Tu jest mój kodu:Zakodowany kod Base64 do pliku (Ruby on Rails) - niezdefiniowana metoda "rozpakuj" Błąd

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 

otrzymuję następujący błąd:

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

co się dzieje niewłaściwy tutaj?

Edycja: NAPRAWDĘ dziwne jest to, że kod do napisania pliku działa idealnie dobrze w konsoli szyny, ale nie podczas uruchamiania aplikacji.

+0

Jakie są dane wyjściowe podczas rejestrowania lub drukowania zmiennej '@ base64'? – sarnold

Odpowiedz

2

Wygląda na to, że próbujesz przekazać skrót do metody dekodowania. Czy na pewno nie powinieneś robić @base64 = params[:character][:base64]?

0

Wystąpił błąd unpack po zmodyfikowaniu typu danych z ciągu na tekst.