Я пытаюсь реализовать Перетяните & функциональности падения с помощью DropZoneJS в моем Rails 5 приложения. Я выполнил для загрузки файл, но представление не освежает, когда контроллер вызывается из JavaScript (отлично работает с обычной загрузкой).Rails 5: Не удается перенаправить после JS вызова (DropZoneJS)
код (только те части, которые имеют значение для дела):
index.html.erb
<%= form_for(:printing_file, url: new_printing_file_path, html: {method: :post, class: "dragdropzone"}) do |f| %>
<div>Drag&Drop a file here</div>
<% end %>
<%= form_for(:printing_file, url: new_printing_file_path, html: {method: :post}) do |f| %>
<%= f.file_field :file, class: "printing-file-upload-field", onchange: "this.form.submit()" %>
<% end %>
Первая форма для Drag & Drop, второй для регулярной загрузки (который перенаправляет ОК).
printing_files.coffee
$(document).ready ->
Dropzone.autoDiscover = false
dropzone = new Dropzone('.dragdropzone',
paramName: 'printing_file[file]'
addRemoveLinks: false
headers: { 'Accept': 'application/javascript' })
printing_files_controller.rb
def new
@printing_file = PrintingFile.new(printing_file_params)
@printing_file.user = current_user
@printing_file.name = printing_file_params[:file].original_filename
if @printing_file.save
respond_to do |format|
format.html { redirect_to files_path, notice: "File was correctly uploaded." }
format.js
end
else
redirect_to files_path, alert: "There was an error while uploading file."
end
end
new.js.erb
console.log("This is never printed");
window.location = "<%= files_path() %>";
Я также пробовал в моем printing_files_controller.rb
несколько вариантов, найденных здесь как render js
, но никто из них не работает.
Выход:
Обработка PrintingFilesController # новый, как JS
Параметры: { "utf8" => "✓", "authenticity_token" => "PBX2dbP8p + aZZXOkIIw1oFg3QZ02mDo + и + Z02NrBFCE + aNT3gWzwFjmQeGmcBcBItkg6l899iGIxuJljWDl + zA == "," printing_file "=> {" file "=> #, @ original_filename =" 9.stl ", @ content_type =" application/octet-stream ", @ headers =" Content-Disposition: form -data; name = \ "printing_file [file] \"; filename = \ "9.stl \" \ r \ nContent-Type: application/octet-stream \ r \ n ">}}
Rendering printing_files/new.js.erb
Оказываемые printing_files/new.js.erb (1.0ms)
Обратите внимание, что JS файл рендеринга, но консоль браузера не показывая ничего.
Это хороший подход, но перезагрузка всей страницы. Я только хочу перезагрузить просмотр файлов, как 'redirect_to'. – fsinisi90