2012-03-13 2 views
2

현재 애플리케이션에 두 가지 가능한 텍스트 상자가 있습니다. 하나는 로컬 이미지 업로드 용이고 다른 하나는 원격 이미지 URL 용입니다. 사용자가 로컬 이미지 파일을 선택하면 "원격 이미지 URL"이 지워지고, 반대의 경우도 마찬가지이므로 하나의 상자 만 채워지도록해야합니다.원격 이미지 URL 또는 이미지가 CarrierWave (RoR)에 업로드되었는지 확인

validate_image_fields를 사용하여 일부 유효성 검사를 수행하려고합니다. 해당 유효성 검사 방법에서 어떤 상자가 채워 졌는지 어떻게 알 수 있습니까?

new.html.erb

<%= form_for @painting, :html => {:multipart => true} do |f| %> 
    <p> 
     <%= f.file_field :image %> 
    </p> 
    <p> 
     <%= f.label :remote_image_url, "or image URL" %><br /> 
     <%= f.text_field :remote_image_url %> 
    </p> 
    <p><%= f.submit %></p> 
<% end %> 

gallery.rb

class List < ActiveRecord::Base 
    attr_accessible :description, :image, :remote_image_url 

    validate :validate_image_fields 

    def validate_minimum_image_size 
    # how do i determine if it is a remote image or local image? 
    end 

감사합니다!

답변

2

'하나의 상자 만 채워짐'이라고 말하면 remote_url이 제출되거나 로컬 파일이 업로드되었는지 확인할 수 있습니다.

def validate_image_fields 
    if remote_image_url.present? 
    # condition/validations for the image url 
    elsif image 
    # condition/validations for uploaded image 
    else 
    errors.add(:base, "No image url or local image provided") 
    end 
end 

이 제품은 찾고 계신 것입니까? 내가 네가 맞았 으면 좋겠어.

관련 문제