2012-05-30 19 views
5

Rails denetleyicilerimden birinde Base64 kodlu bir dize almayı, şifresini çözmeyi ve bir dosyaya (.png) yazmaya çalışıyorum.Base64 kodlanmış dizgeyi dosyaya (Ruby on Rails) - tanımlanmamış yöntem `paketten çıkar 'Hata

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 

aşağıdaki hatayı alıyorum:

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

yanlış burada ne oluyor İşte benim kodudur?

Düzenleme: BİR GERÇEKTEN garip bir şey, dosyayı yazacak kodun, raylar konsolunda gayet iyi çalışıyor ancak uygulamayı çalıştırırken değil.

+0

'@ base64' değişkenini kaydettiğinizde veya yazdırdığınızda hangi çıktı elde edersiniz? – sarnold

cevap

2

Kod çözme yöntemine bir karma aktarmaya çalışıyorsunuz gibi görünüyor. @base64 = params[:character][:base64] yapmamanız gerektiğinden emin misiniz?

0

Veri türünü metinden dize olarak değiştirdiğimde unpack hatası yaşadım.