5

Rails コントローラの 1 つで、Base64 でエンコードされた文字列を取得し、デコードしてファイル (.png) に書き込もうとしています。これが私のコードです:

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>

ここで何がうまくいかないのですか?

編集:本当に奇妙なことの1つは、ファイルを書き込むコードがレールコンソールでは完全に正常に機能するが、アプリケーションの実行時には機能しないことです。

4

2 に答える 2

2

ハッシュをデコード メソッドに渡そうとしているようです。あなたはやるべきではないと確信してい@base64 = params[:character][:base64]ますか?

于 2012-05-30T00:09:28.660 に答える