在我的一个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
我收到以下错误:
undefined method `unpack' for #<ActiveSupport::HashWithIndifferentAccess:0x1044b22d8>
这里出了什么问题?
编辑:一个非常奇怪的事情是,编写文件的代码在rails控制台中运行得非常好,但在运行应用程序时却没有。
答案 0 :(得分:2)
看起来你正试图将哈希传递给解码方法。你确定不应该做@base64 = params[:character][:base64]
吗?
答案 1 :(得分:0)
我将数据类型从字符串修改为文本时出现unpack
错误。