2013-06-10 2 views
0

У меня странная проблема. У нас есть средство проверки изображений, которое предотвращает загрузку изображений, меньших, чем определенный размер. Если изображение слишком маленькое, оно направляет пользователя на страницу/upload с сообщением об ошибке.Flash-сообщение, отображаемое на странице исключения

Он работал красиво, пока я не внес существенные изменения в приложение; Большой рефакторинг, включая код перехода в модули, обновление до рельсов 3.2.13 и переход от R Magick до Mini Magick. Несколько вещей, я не изменил ничего общего с валидатором.

Теперь по какой-то причине он не перенаправляет на страницу/upload со вспышкой. Вместо этого в процессе разработки отображается сообщение об ошибке на странице исключения рельсов под названием «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]) 

вместо произошла

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

Ошибка, потому что вы называли create! - этот метод вызывает ошибку, если проверка не пройдена.

Смежные вопросы