2012-05-30 10 views
5

En uno de mis controladores Rails estoy tratando de tomar una cadena codificada en Base64, decodificarla y escribirla en un archivo (.png). Aquí está mi código:Cadena codificada de Base64 a archivo (Ruby on Rails) - método indefinido `unpack 'Error

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 

estoy consiguiendo el error siguiente:

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

lo que está mal aquí?

Editar: Una cosa realmente extraña es que el código para escribir el archivo funciona perfectamente bien en la consola de rieles, pero no cuando se ejecuta la aplicación.

+0

¿Qué salida obtiene cuando registra o imprime la variable '@ base64'? – sarnold

Respuesta

2

Parece que está intentando pasar un hash al método de decodificación. ¿Estás seguro de que no deberías estar haciendo @base64 = params[:character][:base64]?

0

Tuve un error unpack cuando modifiqué el tipo de datos de cadena a texto.