【问题标题】::remote => true not working when a file uploader is used in form:remote => true 在表单中使用文件上传器时不起作用
【发布时间】:2011-09-11 04:29:29
【问题描述】:

基本上,当我在表单中包含和使用文件上传器时,它似乎取消了 :remote => true 功能并将操作作为 HTML 代替 JS 处理。有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails ajax ruby-on-rails-3 jquery


    【解决方案1】:

    我刚刚遇到了同样的问题,并找到了以下替代方法来使其正常工作:

    Gem remotipart => http://www.alfajango.com/blog/rails-3-ajax-file-uploads-with-remotipart/

    jQuery 插件 'jaxy' => https://github.com/adamlogic/jquery-jaxy

    我认为我更喜欢第一个选项。但是有选择是好的。 =)

    【讨论】:

    • Remotipart 非常棒,并且仍然可以在 Rails 4 上运行。这是 github 页面的直接链接,其中包含文档,github.com/JangoSteve/remotipart
    【解决方案2】:

    您不能通过 AJAX 上传文件,因此您的请求显然是纯 HTML,因为您没有任何特定于 :js 的内容,并且 rails 认为这只是一个纯 HTML POST 请求。

    https://github.com/JangoSteve/remotipart

    gem 'remotipart', '~> 1.2'
    

    然后bundle install

    //= require jquery.remotipart
    

    sample_layout.html.erb

    <%= form_for @sample, :html => { :multipart => true }, :remote => true do |f| %>
      <div class="field">
        <%= f.label :file %>
        <%= f.file_field :file %>
      </div>
      <div class="actions">
        <%= f.submit %>
      </div>
    <% end %>
    

    在控制器中

    def create
      respond_to do |format|
        if @sample.save
          format.js
        end
      end
    end
    

    create.js.erb

    // Display a Javascript alert
    alert('success!');
    <% if remotipart_submitted? %>
      alert('submitted via remotipart')
    <% else %>
      alert('submitted via native jquery-ujs')
    <% end %>
    

    【讨论】:

      【解决方案3】:

      AJAX 图像上传不起作用,至少不是以标准方式。

      有更新的 HTML5 技术使其工作,以及使用 &lt;iframe&gt; 的变通方法

      有一个很棒的库,可以使用进度表执行多个文件 ajax 上传,并根据浏览器降级以使用不同的技术。

      AJAX 上传库:http://valums.com/ajax-upload/

      这需要一些额外的工作,但结果会非常好!

      【讨论】:

        猜你喜欢
        • 2023-04-05
        • 2013-08-31
        • 2012-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-05
        • 1970-01-01
        • 2015-08-21
        相关资源
        最近更新 更多