2012-05-30 2 views
5

내 Rails 컨트롤러 중 하나에서 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 오류가 발생했습니다.