【问题标题】:Using dropzonejs-rails and options使用 dropzonejs-rails 和选项
【发布时间】:2017-07-16 20:34:37
【问题描述】:

我计划使用 dropzone.js 将文件上传到我的 rails 应用程序。但是我在使用自定义选项时遇到了问题。我正在使用 Dropzone.js 的示例中的代码。

这是我的代码:

<%= form_for(@document, html: {multipart: true, class: 'dropzone', id: 'myAwesomeDropzone'}) do |f| %>
    <div class="fallback">
      <%= f.file_field :document %><br>
      <%= f.submit 'Upload my document' %>
    </div>
<% end %>

js代码:

document.addEventListener("turbolinks:load", function () {
    // disable auto discover
    Dropzone.autoDiscover = false;

    // "myAwesomeDropzone" is the camelized version of the HTML element's ID
    Dropzone.options.myAwesomeDropzone = {
        paramName: "file", // The name that will be used to transfer the file
        maxFilesize: 2, // MB
        dictDefaultMessage : 'Testing'
    };

});

当我在浏览器中尝试时,dropzone 可以工作,但会忽略带有选项的 javascript 代码。我做错了什么?

【问题讨论】:

    标签: javascript ruby-on-rails dropzone.js


    【解决方案1】:

    我认为,问题是您在自动发现发生后配置表单(并停止自动发现)。使用完全相同的form_for 标签,我可以通过移动

    Dropzone.autoDiscover = false;
    

    turbolinks:load 事件之外,然后在配置块之后初始化新的放置区。我的 javascript 最终看起来像:

    Dropzone.autoDiscover = false;
    document.addEventListener("turbolinks:load", function () {
        // "myAwesomeDropzone" is the camelized version of the HTML element's ID
        Dropzone.options.myAwesomeDropzone = {
            paramName: "file", // The name that will be used to transfer the file
            maxFilesize: 2, // MB
            dictDefaultMessage : 'Testing'
        };
    
        new Dropzone("#myAwesomeDropzone");
    });
    

    这可以进一步简化为

    Dropzone.autoDiscover = false;
    document.addEventListener("turbolinks:load", function () {
      new Dropzone("#myAwesomeDropzone", {
        paramName: "file",
        maxFilesize: 2,
        dictDefaultMessage: 'Testing'
      });
    });
    

    【讨论】:

    • 不错!感谢您的帮助!
    • new Dropzone("#myAwesomeDropzone"); 这一行是什么?我正在使用神社和 jquery-fileupload-rails,但使用该行不会将我的文件上传到 S3。
    • @exsnake 当我在测试时,由于我禁用了autoDiscover,javascript 没有对#myAwesomeDropzone 做任何事情,根据该插件的文档,该行是导致它的原因将拖放区添加到表单上,请参阅文档中的“Creating Dropzones Programatically”。还编辑了我的答案,当我返回获取该链接时,我看到您可以在初始化时传递选项。
    • @exsnake 也请注意,不确定这是否会导致任何问题,但在您的后备表单中,您有一个名为 document[document] 的字段,并且在该放置区配置中它看起来会尝试提交作为file
    • 是的,我尝试将 file 更改为 document[document],但没有成功。也许我应该创建一个新问题。
    猜你喜欢
    • 2015-04-19
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    相关资源
    最近更新 更多