2013-06-10 3 views
0

이상한 문제가 있습니다. 업로드되는 특정 크기보다 작은 이미지를 방지하는 이미지 유효성 검사기가 있습니다. 이미지가 너무 작 으면 플래시 오류 메시지와 함께 사용자를/업로드 페이지로 안내합니다.예외 페이지에서 플래시 메시지가 렌더링되고 있습니다.

앱을 크게 변경하기 전에는 제대로 작동했습니다. 코드를 모듈로 옮기는 것, 레일 3.2.13으로 업그레이드하기, R Magick에서 Mini Magick으로 이동하는 것을 포함하는 주요 리펙터. 꽤 많은 것들, 나는 validator와 아무런 관계가 없었습니다.

이제 플래시 메시지로/업로드 페이지로 리디렉션되지 않습니다. 대신 개발시 "ActiveRecord::RecordInvalid in UploadController#create"이라는 제목의 레일 예외 페이지에 오류 메시지가 표시됩니다. 그리고 생산에서, Heroku에, 그것은 422 페이지로 응답합니다, "당신이 원한 변화는 거부되었습니다".

아이디어가 있으십니까?

제어기

def create 
    @item = Item.create!(params[:item]) 
    if @item.save 
     redirect_to crop_url(item_id: @item.id) 
    else 
     error_msg = @item.errors[:base] 
     redirect_to upload_url, flash: { errors: error_msg } 
    end 
    end 

뷰에서 upload_process 모듈

def validate_minimum_image_size 
    geometry = cover.geometry 
    if (! geometry.nil?) 
    width = geometry[0] 
    height = geometry[1] 
    end 
    unless (width >= 540 && height >= 540) 
    errors.add :base, "Oops! Your image is too small... Dimensions must be at least 540x540 pixels!" 
    end 
end 

에러 메세지 검증 방식 (HAML)

.error 
    .pink 
    - if flash.present? 
     - if flash[:errors].present? 
     - flash[:errors].each do |err| 
      = err 
액션 만들기

답변

3

당신이 있어야합니다

@item = Item.new(params[:item]) 

대신을 : 당신이 create!를 호출했기 때문에

@item = Item.create!(params[:item]) 

오류가 발생 - 유효성 검사가 실패 할 경우이 방법은 오류가 발생합니다.