2012-05-30 5 views
5

In einem meiner Rails-Controller versuche ich eine Base64-codierte Zeichenfolge zu nehmen, zu dekodieren und in eine Datei (.png) zu schreiben. Hier ist mein Code:Base64-codierte Zeichenfolge in Datei (Ruby on Rails) - undefinierte Methode `entpacken 'Fehler

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 

ich die folgende Fehlermeldung erhalten:

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

Was falsch ist hier los?

Edit: Eine wirklich seltsame Sache ist, dass der Code zum Schreiben der Datei einwandfrei in Schienen-Konsole funktioniert, aber nicht beim Ausführen der Anwendung.

+0

Welche Ausgabe erhalten Sie, wenn Sie die Variable '@ base64' protokollieren oder drucken? – sarnold

Antwort

2

Es sieht so aus, als ob Sie versuchen, einen Hash in die Dekodiermethode einzugeben. Sind Sie sicher, dass Sie nicht @base64 = params[:character][:base64] tun sollten?

0

Ich hatte einen unpack Fehler, wenn ich den Datentyp von Zeichenfolge in Text änderte.

Verwandte Themen