添加文件并右键重定向,但不另行通知。如果您不使用xhr,请注意显示。
的application.js
var files = evt.target.files || evt.dataTransfer.files;
// files is a FileList of File objects. List some properties.
for (var i = 0, f; f = files[i]; i++) {
var xhr = new XMLHttpRequest();
xhr.open("POST", 'report_drag', false);
xhr.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
xhr.setRequestHeader("X_FILENAME", "file." + f.name.split('.').pop());
xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'));
xhr.send(f);
}
controller.rb
def report_drag
filename = "report/#{DateTime.now.year}-#{DateTime.now.month}/" + "#{Vendor.where(id: current_user.id).first.title}" + "#{File.extname("#{request.headers['HTTP_X_FILENAME']}")}"
File.open(File.join(filename), "wb") { |f| f.write(request.body.read) }
redirect_to report_url, notice: "Файл успешно добавлен."
end
答案 0 :(得分:0)
当您从浏览器发出简单请求时(使用link
或button
,或只是在地址栏中写入),响应将替换当前页面并呈现而不是它。
当您使用XHR
时,浏览器不会更改当前位置并且不会呈现任何内容 - 它假定调用者(javascript代码)负责读取响应,并从中理解。
如果您想与服务器进行异步通信,并使用其响应重新呈现页面(部分),请阅读此tutorial for using rails with Ajax