写真がアップロードに失敗した場合を除き、すべてがdropzone.jsで問題なく動作しています。dropzone.jsがエラー時にエラーを正しくリダイレクトまたはレンダリングしない
フォームが写真で提出される場合には大きすぎるか、フォームが以下の問題が発生したフォトずに提出されている添付:Herokuのコンソールで
はPOST「/写真」のスタート。 PhotosControllerの#で..Processingは= "/写真
ブラウザは、その後example.com/photosを示すが、画面に何も表示されないHTML 完成した422処理不能エンティティ...メソッド= POSTパスとして作成します。
$(document).ready(function() {
var dropzone;
Dropzone.autoDiscover = false;
dropzone = new Dropzone('#dropform', {
maxFiles: 1,
maxFilesize: 1,
paramName: 'photo[picture]',
headers: {
"X-CSRF-Token": $('meta[name="csrf-token"]').attr('content')
},
addRemoveLinks: true,
clickable: '#image-preview',
previewsContainer: '#image-preview',
thumbnailWidth: 200,
thumbnailHeight: 200,
parallelUploads: 100,
autoProcessQueue: false,
uploadMultiple: false
});
$('#item-submit').click(function(e) {
e.preventDefault();
e.stopPropagation();
if (dropzone.getQueuedFiles().length > 0) {
return dropzone.processQueue();
}
else {
return $('#dropform').submit();
}
});
return dropzone.on('success', function(file, responseText) {
return window.location.href = '/photos/' + responseText.id;
});
return dropzone.on('error', function(file, errorMessage, xhr) {
console.log('error');
});
});
をPhotosController
def create
@photo = current_user.photos.build(photo_params)
respond_to do |format|
if @photo.save!
format.html { redirect_to @photo, notice: 'Photo was successfully created.' }
format.json { render json: @photo }
else
format.html { redirect_to new_photos_path, notice: 'Photo was not created'}
format.json { redirect_to photos_path and return @photo.errors, status: :unprocessable_entity }
end
end
end
編集
return dropzone.on('error', function(file, errorMessage, xhr) {
console.log('error');
window.location.href = '/photos/new'
});
結果で:
がPOSTを開始「/写真"PhotosController#による処理はHTMLとして作成 ... 422ms(ActiveRecord:14.5ms)で422の処理不能なエンティティを完了 ...メソッド= GETパス="/photos/new "...メソッド= POSTパス="/photos 「
し、我々は戻って
こんにちはティミー。あなたのコードだけの答えは、ある状況ではもっと役に立つでしょう。たとえば、このコードの変更が必要と思われる理由を説明することができます。なぜそれが質問者の問題を解決するのだろうか。 –