2016-12-01 1 views
0

upload.html.erb 이미지 및 자르기 정보 (x 및 y 좌표, 너비 및 높이)가 포함 된 양식을 update_image이라는 컨트롤러 메서드에 제출합니다. 이 정보를 모델 (picture.rb)에 전달하고이 이미지의 자른 버전을 저장하려고합니다.종이 클립 조건부 스타일

나는 이미지를 저장하기 위해 Rails 5와 Paperclip을 사용하고 있습니다. 나는 해결할 수없는 다음과 같은 두 가지 문제에 직면했다.

  1. 내 모델 내의 작물 정보 데이터에 액세스하는 방법은 무엇입니까? 나는 작물 정보를 데이터베이스에 저장하고 싶지 않습니다.
  2. 자르기 정보가있는 경우 만 자르기 방법? (작물 기능이없는 다른 형식의 일반 파일 업로드에 동일한 모델을 사용하고 싶습니다.)

도움을 주시면 대단히 감사하겠습니다!

upload.html.erb

<form action="/update_image" enctype="multipart/form-data" accept-charset="UTF-8" method="post"> 
    <input type="file" name="image" /> 
    <input type="hidden" name="crop_x" value="0" /> 
    <input type="hidden" name="crop_y" value="5" /> 
    <input type="hidden" name="crop_width" value="200" /> 
    <input type="hidden" name="crop_height" value="100" /> 
</form> 

upload_controller.rb

def update_image 
    picture = Picture.new(image: params[:image]) 
end 

picture.rb

class Picture < ActiveRecord::Base 
    has_attached_file :image, styles: { 
    cropped: "-crop #{@crop_w}x#{@crop_h}+#{@crop_x}+#{@crop_y}", 
    thumb: "100x100>" 
    } 
end 

답변

1

당신은 동적 스타일을 찾고 있습니다. 당신은 자르기 필요 컨트롤러에서

class Picture < ActiveRecord::Base 
    attr_accessor :crop_needed 
    has_attached_file :image, styles: Proc.new { |clip| clip.instance.attachment_sizes } 

def attachment_sizes 
    crop_needed ? { 
     cropped: "-crop #{@crop_w}x#{@crop_h}+#{@crop_x}+#{@crop_y}", 
     thumb: "100x100>" 
    } : {thumb: "100x100>"} 
end 
end 

:

def update_image 
    picture = Picture.new 
    picture.crop_needed = true if params[:crop_x].present? 
    picture.image = params[:image] 
    picture.save 
end 

당신이 자르기를 필요로하지 않는 다른 컨트롤러에서, 그냥 false로 crop_needed을 설정합니다.