2012-05-30 6 views
5

In uno dei miei controller Rails sto provando a prendere una stringa codificata Base64, decodificarla e scriverla in un file (.png). Ecco il mio codice:Stringa codificata Base64 su file (Ruby on Rails) - metodo undefined non risolto Errore

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 

Sto ottenendo il seguente errore:

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

cosa c'è di sbagliato qui?

Modifica: una cosa DAVVERO strana è che il codice per scrivere il file funziona perfettamente nella console di rails ma non quando si esegue l'applicazione.

+0

Quale output si ottiene quando si registra o si stampa la variabile '@ base64'? – sarnold

risposta

2

Sembra che tu stia cercando di passare un hash nel metodo di decodifica. Sei sicuro di non doverlo fare @base64 = params[:character][:base64]?

0

Ho avuto un errore unpack quando ho modificato il tipo di dati da stringa a testo.

Problemi correlati