奇妙な問題があります。特定のサイズよりも小さい画像がアップロードされるのを防ぐ画像バリデーターがあります。画像が小さすぎる場合は、ユーザーを /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