2015-01-07 1 views
2

내 사이트는 핀이라고하는 앨범 리뷰를 게시하기위한 사이트입니다.Rails 4의 종이 클립 이미지를 새로운 레코드로 복사

: 아티스트 : 해 : 제목 : 순위 : 설명, : 이미지

이미지는 종이 클립을 사용하고 그

을 중요한 경우 아마존 S3에 저장되어있는 핀 모델은 다음과 같은 특성이 있습니다

다른 사용자가 올린 리뷰를 보도록 허용하고 링크를 클릭하면 해당 앨범에 대한 리뷰를 더 간단하게 작성할 수 있습니다. 그래서 기본적으로 링크는 그들을 Pin.new 페이지로 가져 가고 폼에는 이미 : artist, : title, : image 및 : year가 채워져 있습니다.

모든 속성을 가져 오는 동안 어떻게하는지 알아 냈습니다. , : 설명과 : rank를 포함하여, 나는 싫어. 또한 이 아니며 이미지를 새 양식으로 가져올 수 없습니다. 아티스트 :

def copy 
    @source = Pin.find(params[:id]) 
    @pin = @source.dup 
    render 'new' 
    end 

그리고 내 쇼보기 :

<%= link_to "copy", copy_pin_path(params[:id]) %> 

그래서 질문 한 방법 @ source.dup 아니라

여기 내가 사용하고있어 pins_controller.rb 코드 : 제목 및 : 년

질문 2는 클립 클립 이미지를 가져 오는 방법입니다. 나는 이것을 내 pins_controller.rb에 추가하려고했습니다.

def copy 
    @source = Pin.find(params[:id]) 
    @pin = @source.dup 
    @pin.image = @source.image 
    render 'new' 
    end 

하지만 작동하지 않았습니다.

업데이트 : miller350이 내 첫 번째 질문에 답변했지만 여전히 "새로운"양식으로 복사 할 클립지 이미지를 얻을 수 없습니다. 콘솔에서 나는 하나 개의 핀 기록을 복사해서 이와 같은 새로운 핀을 절약 할 수 있습니다 :

r = Pin.new 
r.image = Pin.find(83).image 
r.save 

나는 문제가 새로운 핀 형태의 이미지가 핀을 저장하기 전에 사용자의 PC에서 선택되어 있어야한다는 것입니다 생각합니다. Paperclip의 기능이 무엇이든간에, 나는 그것이 내가 붙어있는 곳이라고 생각합니다.

답변

2

첫 번째 부분에서는 속성을 개별적으로 가져 와서 인스턴스 변수로 설정하고 두 번째 부분에서는 URI를 사용할 수 있습니다.

def copy 
    @source = Pin.find(params[:id]) 
    @image = URI.parse(@source.image) 
    @pin = Pin.new(artist: @source.artist, title: @source.title, year: @source.year, image: @image) 
    render 'new' 
end 
+0

1 부, 고맙습니다! 2 부는 나에게 "잘못된 URI (URI가 아닌가?) :/system/pins/images/000/000/083/...."오류를 제공합니다. 위의 내용을 @image = URI로 바꿀 제안을 찾았습니다. parse (URI.encode (@source.image)) 그러면 다음과 같은 에러가 발생합니다 : # 에 대한 정의되지 않은 메소드'gsub ' –

+0

'@ source.image'를'@source.image.url'로 변경하고 문자열이 첨부 파일 대신. – miler350

+0

"나는 URI의 암시 적 변환 :: 문자열을 일반화하지 않음"이라고하는 @pin 줄에 오류가 있음을 추가합니다. –

1

다음은 이미지를 새로운 핀 형식으로 복사하는 작업입니다.

나는 종이 클립의 image_remote_url 기능은 이미 설정 한,하지만 난 pin.rb에 아래의 방법에 .to_s를 추가하는 데 필요한 :

def image_remote_url=(url_value) 
self.image = URI.parse(url_value).to_s unless url_value.blank? 
super 
end 

그럼 내 컨트롤러 :

def copy 
@source = Pin.find(params[:id]) 
@image = @source.image.url 
@pin = Pin.new(artist: @source.artist, album: @source.album, year: @source.year, image_remote_url: @image) 
render 'new' 
end 

이 페이스트 새 양식에 이미지의 URL. 그것은 Heroku 생산 버전에서만 작동하며 로컬 버전에서는 작동하지 않습니다.