2016-08-09 2 views
1

Carrierwave gem을 사용하여 모델에 첨부 파일을 업로드하고 있습니다. 첨부 파일의 전체 텍스트 검색을 허용하는 mapper 첨부 파일 플러그인이있는 elasticsearch를 추가했습니다.레일에서 base64로 Carrierwave 인코딩을 인코딩하십시오.

Carrierwave 및 elasticsearch는 정상적으로 작동하지만 전체 텍스트 검색을 수행하려면 첨부 파일을 base64로 인코딩해야합니다.

나는이 튜토리얼 (http://rny.io/rails/elasticsearch/2013/08/05/full-text-search-for-attachments-with-rails-and-elasticsearch.html)을 따라 갔지만 레일스 나 캐리어 웨이브에 어떤 변화가 있었다고 가정한다. 나는 64 기수로 첨부 파일을 인코딩하려고 할 때 특히, 나는 다음과 같은 유형의 오류가 발생합니다 :

no implicit conversion of CarrierWave::SanitizedFile into String

오류는 모델의 다음 줄에 : 나는 경로를 교체 할 경우

File.open(Base64.encode64(File.read(document.file))) 

실제 파일에 대한 URL은 잘 작동합니다.

나는 SO 검색 한 내가 찾을 수있는 유일한 관련 대답은 나에게 같은 오류 제공 : Carrierwave encode file to base64 as process

나는 완전한 레일 초보자 오전 희망이 나를 제외하고 모든 사람에게 분명 무언가이다, 그러나 우리는 모든 것을 초보자, 처음?

감사합니다.

답변

0

CarrierWave의 read 메서드는 파일의 내용을 반환합니다. 그래서 Document을 가정하는 모델이고 file이 업 로더 속성입니다,이 작업을해야합니다 :

Base64.encode64(document.file.read) 
+0

는 것을 쉽게 ... 덕분 믿을 수 없어! – Nick

관련 문제