Base64编码的字符串到文件(Ruby on Rails) - 未定义的方法`unpack'错误

Tra*_*ney 5 base64 ruby-on-rails unpack activesupport

在我的一个Rails控制器中,我尝试使用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
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

undefined method `unpack' for #<ActiveSupport::HashWithIndifferentAccess:0x1044b22d8>
Run Code Online (Sandbox Code Playgroud)

这里出了什么问题?

编辑:一个非常奇怪的事情是,编写文件的代码在rails控制台中运行得非常好,但在运行应用程序时却没有.

Nic*_*gan 2

看起来您正在尝试将哈希传递到解码方法中。你确定你不应该这样做吗@base64 = params[:character][:base64]