나는 파일 관리를 위해 dropzonejs-rails gem과 dropzone을 통합하고 있습니다. 업로드 작업이 훌륭하지만 파일을 삭제하면 고민이되고 있습니다. 아약스가 내 서버에 충돌 할 수 있도록 리스너를 연결할 수 없습니다. 루프트 한자는 Ruby on Rails이고, 제한된 자바 스크립트 경험이 있기 때문에 아마 여기 진짜 문제 일 것입니다.하지만 어쩌면 누군가가 저의 부끄러운 2 일간의 투쟁을 해결할 수 있습니다.레일즈가있는 Dropzonejs - 서버에서 파일 삭제하기
파일이 업로드되면 Dropzone에서 previewTemplate이 올바르게 표시되고 addRemoveLinks: true
은 축소판 미리보기에서 제거 링크를 표시합니다. 내 목표는 사용자가 파일의 제거 링크를 클릭하면 서버에 파일을 삭제하라는 요청을 보내야한다는 것입니다. 블로그, dropzone FAQ, github 문제 등에서 많은 접근 방식을 시도했습니다. 가장 가까운 것은 성공입니다 : https://github.com/enyo/dropzone/issues/456.
성공적으로 업로드하면 .dz-remove
버튼에 이벤트 리스너를 추가하려고 시도했습니다. 이 리스너는 파일을 삭제하라는 ajax 요청으로 서버를 히트하기위한 것입니다. 현재 미리보기 축소판에서 제거 링크를 클릭하면 dropzone에서 미리보기 축소판 만 제거되지만 서버에는 ajax가 적용되지 않습니다. 여기에 자바 스크립트 코드 :
// Listening for Dropzone upload success
// imageDropzone is the camelized version of the dropzone form's id.
Dropzone.options.imageDropzone = {
init: function() {
this.on("success", function(file, response, event) {
// Loads image ID to the file preview for use w/deletion
var elem;
elem = document.createElement('input');
elem.setAttribute("name", "id");
elem.setAttribute("value", response["id"]);
elem.setAttribute("type", "hidden");
file.previewTemplate.appendChild(elem);
// Add the listener to the dz-remove class link
$('.dz-remove').on("click", (function(e) {
var imageId, imageToken, _this;
_this = this;
e.preventDefault();
e.stopPropagation();
imageId = $(_this).parent().find('[name="id"]').val();
console.log(_this);
console.log(imageId);
console.log(imageToken);
$.ajax({
url: "/remove_image",
type: "DELETE",
dataType: "script",
data: {
id: imageId
}
});
return false;
}), false);
});
}
};
따라서는 클릭 삭제 링크와 연결된 파일 정보를 찾을해야하고, 보내는 삭제 요청에 대한 서버에 대한 정보. 누구든지 Ruby on Rails (Rails 4) 응용 프로그램에서 Javascript를 사용하여이 접근법을 성공적으로 얻었습니까?
추가 정보 나 코드가 필요한 경우 알려주십시오. 감사!