2014-08-27 4 views
0
gem 'acts_as_taggable_on' 
gem 'activeadmin' 

... 

ActiveAdmin.register Article do 
... 
    form do |f| 
     f.inputs do 
      f.input :tag_list 
     end 
    end 
end 

내가 태그 단어 "статья"로 입력하려고 해요을 함께 키릴 문자 입력 정의되지 않은 변환하지만, 대가로 :레일에 루비 - acts_as_taggable 보석

Encoding::UndefinedConversionError in Admin::ArticlesController#create 
"\xD1" from ASCII-8BIT to UTF-8 

사방 보았지만 찾을 수 없습니다 적합한 대답. 이 오류를 제거하려면 어떻게해야합니까?

UPDATE 나는 제목이나 같은 다른 입력 필드와는 키릴 문자를 전달하는 데 괜찮아요 article_body 것으로 나타났습니다. 그래서 나는 그것이 acts_as_taggable 보석으로 무언가를 가지고 있다고 생각합니다.

+0

다음처럼 보석 및 컷에서 코드를 복사

1) 설정에서 만든 파일 tag.rb/초기화

2)/붙여 넣기 무엇 당신의 레일과 루비 버전입니까? –

+0

루비 2.1.2 및 레일 4.1.4 – Flame

답변

0

그래서 실제로 acts_as_taggable 보석에 문제가있었습니다. Internets and rails 콘솔을 통한 연구에서 데이터베이스에 저장하는 동안 문제가 있음을 발견했습니다. 알 수없는 인코딩을 이진 형식으로 변환했기 때문에 변환에 실패했으며 sqlite3이이를 문자열 열에 저장할 수 없습니다. 그래서 나는 다음과 같이 보석 파일을 수정했다.

~/.rvm/gems/ruby-2.1.2/gems/acts_as_taggable_on-3.0.0.rc2/lib/acts_as_taggable_on/tag.rb 

... 
def as_8bit_ascii(string) 
    if defined?(Encoding) 
     string.to_s.force_encoding('UTF-8') #It was BINARY previously 
    else 
     string.to_s.mb_chars 
    end 
end 

그리고 지금 그것이 작동한다!

UPDATE

그것은 소스 코드를 패치 할 수 있지만 응용 프로그램에 적용하지 더 나은 것 같아요. 그래서 소위 원숭이 패치를 적용하려면 다음을 수행했습니다. (실험에 의해 배운 원숭이 패치에 인터넷 검색)

ActsAsTaggableOn::Tag.class_eval do 
    class << self 
    private 
     def as_8bit_ascii(string) 
      if defined?(Encoding) 
       string.to_s.force_encoding('UTF-8') #It was BINARY previously 
      else 
       string.to_s.mb_chars 
      end 
     end 
    end 
end