2015-08-23 2 views
1

Я пытаюсь создать dropzone, где пользователи могут сразу удалить несколько файлов. Проблема в том, что он только создает dropzone, когда я перезагружаю веб-страницу, а не когда я открываю ее в первый раз. Я имею в виду, когда я нажимаю, чтобы открыть представление, которое заботится о загрузках, я просто получаю . и загружайте кнопки, которые вы увидите в моем коде, но когда я перезагружаю страницу, я получаю окно dropzone. Я не вижу, чего я здесь не хватает. Код, который я написал, было:Правильный просмотр не отображается - Rails 4

_new.html.erb

<center> 
<% @upload = Upload.new %> 
<%= form_for @upload , html: { :multipart => true, class: "dropzone"} do |u| %> 
    <div class="fallback"> 
     <%= u.file_field :file %><br> 
     <%= u.submit "Upload" %> 
    </div> 
<% end %> 

uploads.js.coffee

$(document).ready() -> 
Dropzone.autoDiscover = false; 

$("#new_upload").dropzone({ 
    maxFilesize: 25, 
    paramName: "upload[file]", 
    addRemoveLinks: true 
}); 

uploads_controller.rb

class UploadsController < ApplicationController 

def new 
    @upload = Upload.new 
end 

def create 
    @upload = Upload.create(upload_params) 
    if @upload.save 
    render json: { message: "success" }, :status => 200 
    else 
    render json: { error: @upload.errors.full_messages.join(',')}, :status => 400 
    end  
end 

def destroy 
    @upload = Upload.find(params[:id]) 
    if @upload.destroy  
    render json: { message: "Archivo eliminado." } 
    else 
    render json: { message: @upload.errors.full_messages.join(',') } 
    end 
end 

private 

def upload_params 
    user = current_user.id 
    params.require(:upload).permit(:file,:user) 
end 

end 

Вы также могли заметить, что в _new.html.erb файл Я переопределение переменной @upload класса, который был уже определен в контроллере. Если я удалю его, то действие не будет работать. В чем проблема?

Пожалуйста, спросите меня, если вы нуждаетесь во мне, чтобы предоставить больше кода или деталей.

Спасибо в продвижении.

+0

Try добавляя '«данных-не-turbolink»: true' на ссылку, которая открывает эту страницу. – Vasseurth

+0

@ Vasseurth, yeap, вот и все. Благодаря! – tulians

+0

@ Vasseurth, хотите добавить это как ответ? Поэтому я могу отметить это как правильный ответ. – tulians

ответ

0

Вы должны добавить 'data-no-turbolink': true по ссылке, открывающей эту страницу. Turbolinks не всегда хорошо играет с $(document).ready, так что это вызовет ссылку без турбо-ссылок.

Существует также драгоценный камень называется jquery-turbolinks, которые могли бы сделать текущую версию работы без data-no-turbolink

Смежные вопросы