0

奇妙な問題があります。特定のサイズよりも小さい画像がアップロードされるのを防ぐ画像バリデーターがあります。画像が小さすぎる場合は、ユーザーを /upload ページに誘導し、フラッシュ エラー メッセージを表示します。

アプリに大きな変更を加えるまではうまく機能していました。モジュールへのコードの移動、Rails 3.2.13 へのアップグレード、 から への移行など、主要なR MagickリファクタリングMini Magick。バリデータに関しては何も変更していません。

何らかの理由で、フラッシュメッセージで /upload ページにリダイレクトされなくなりました。代わりに、開発中は、" " というタイトルの Rails 例外ページにエラー メッセージが表示されます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
4

1 に答える 1

3

あなたが持っている必要があります:

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

それ以外の:

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

呼び出し中にエラーが発生しましたcreate!- 検証が失敗した場合、このメソッドはエラーを発生させます。

于 2013-06-10T15:33:11.703 に答える