2012-05-30 34 views
5

Trong một bộ điều khiển Rails của tôi, tôi đang cố gắng lấy chuỗi mã hóa Base64, giải mã và ghi nó vào tệp (.png). Đây là mã của tôi:Chuỗi mã hóa Base64 vào tệp (Ruby on Rails) - phương thức chưa xác định `giải nén 'Lỗi

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 

Tôi nhận được lỗi sau:

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

gì đang xảy ra sai ở đây?

Chỉnh sửa: Một điều lạ lùng là mã để viết tệp hoạt động hoàn toàn tốt trong bảng điều khiển đường ray chứ không phải khi chạy ứng dụng.

+0

Bạn nhận được kết quả gì khi bạn đăng nhập hoặc in biến '@ base64'? – sarnold

Trả lời

2

Dường như bạn đang cố gắng chuyển băm vào phương thức giải mã. Bạn có chắc chắn bạn không nên làm @base64 = params[:character][:base64]?

0

Tôi gặp lỗi unpack khi tôi sửa đổi loại dữ liệu từ chuỗi thành văn bản.