2012-05-30 12 views
5

मेरे रेल नियंत्रकों में से एक में मैं बेस 64 एन्कोडेड स्ट्रिंग लेने की कोशिश कर रहा हूं, इसे डीकोड करता हूं और इसे एक फ़ाइल (.png) पर लिखता हूं।बेस 64 एन्कोडेड स्ट्रिंग फ़ाइल (रूबी पर रूबी) - अपरिभाषित विधि 'अनपैक' त्रुटि

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> 

गलत यहाँ क्या हो रहा है यहाँ मेरी कोड है?

संपादित करें: एक वास्तव में अजीब बात यह है कि फ़ाइल लिखने के लिए कोड रेल कंसोल में पूरी तरह से ठीक काम करता है लेकिन एप्लिकेशन चलाने पर नहीं।

+0

जब आप 'base64' चर लॉग या प्रिंट करते हैं तो आपको क्या आउटपुट मिलता है? – sarnold

उत्तर

2

ऐसा लगता है कि आप डीकोड विधि में हैश पास करने का प्रयास कर रहे हैं। क्या आप वाकई @base64 = params[:character][:base64] नहीं कर रहे हैं?

0

मेरे पास unpack त्रुटि थी जब मैंने डेटा प्रकार को स्ट्रिंग से टेक्स्ट में संशोधित किया था।

संबंधित मुद्दे