2016-10-21 11 views
0

後、私は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 %> 

最初のフォーム(リダイレクトされますOK)。

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 + U + Z02NrBFCE + aNT3gWzwFjmQeGmcBcBItkg6l899iGIxuJljWDl + zA == "、" printing_file "=> {" file "=>#、@ original_filename =" 9.stl "、@ content_type ="アプリケーション/オクテットストリーム "、@headers =" Content-Disposition:form -data; name = \ "printing_file [file] \";ファイル名= \ "9.stl \" \ r \ nContent-Type:application/octet-stream \ r \ n ">}}

レンダリングprinting_files/new.js.erb

レンダリングprinting_files/new.js.erb(1.0ms)

のjsファイルがレンダリングされることに注意してくださいますが、ブラウザのコンソールが何も表示されていません。

答えて

1

私はあなたがドロップゾーンの成功パラメータを探していると信じています:

$(document).ready -> 
    Dropzone.autoDiscover = false 
    dropzone = new Dropzone('.dragdropzone', 
    paramName: 'printing_file[file]' 
    addRemoveLinks: false 
    headers: { 'Accept': 'application/javascript' }) 
    success:() -> location.reload() 

あなたは、その関数の内部でJavascriptの場所を変更することができます。

+0

良いアプローチですが、ページ全体をリロードしています。私は 'redirect_to'のようにファイルビューをリロードしたいだけです。 – fsinisi90