2012-05-30 20 views
5

私のRailsコントローラの1つでは、Base64エンコード文字列をデコードしてファイル(.png)に書き込もうとしています。ここに私のコードは次のとおりです。Base64でエンコードされた文字列をファイルに(Ruby on Rails) - 未定義のメソッド `unpack 'エラー

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エラーが発生しました。

関連する問題