javascript - 提供反馈以从 Controller 查看

标签 javascript ruby-on-rails ruby ajax upload

我在一个 View 中使用多个文件字段来上传多个文件。我想通知用户上传进度。我试过用这样的东西

def create  
    params[:upload_data].each do |file|  
    unless (file =="" or file== nil)   
    @photo = Photo.create({:approved => false, :user_id => @current_user.id})    
        @result = "Uploading #{file.original_filename}"  
            render :update do |page|  
            page.insert_html(:bottom, 'progress', :partial => 'partials/result')   
            end   
         #... perform upload
end

如果我删除对用户的反馈,它会正常工作。但是它在进入时失败并出现多重渲染错误。我想知道是否有人知道这样做的任何方法。

最佳答案

您不能多次调用渲染。仅当 Controller 方法将返回时才应使用渲染器。

要使其正常工作,您需要更改发出请求的方式,可能使用 ajax。然后每次上传都会在页面上更新一些东西,javascript 会执行下一个“上传这个文件,然后更新”调用。

编辑:我不是前端人员,所以我不能为此提供实际的工作代码,但应该是这样的。目前,您正在将几个文件作为参数发送到 Controller 中。您需要更改此设置,以便后端一次只处理一个文件。这意味着更改前端以向后端发出单独的请求。您不能仅使用 html 表单来执行此操作——您需要 javascript。 Controller 将呈现一个 rjs 以发回更新“已处理文件 xyz”,客户端代码将触发另一次上传,直到所有文件都已上传。

关于javascript - 提供反馈以从 Controller 查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/827501/

相关文章:

ios - 使用载波将图像从 iphone 应用程序上传到 Rails 应用程序

ruby-on-rails - Ruby 从类中获取实例方法定义

javascript - Ajax(这个)不工作

带有正则表达式的 JavaScript 表单验证邮寄地址不起作用!

javascript - Ruby on Rails Javascript 在开发/生产方面有所不同

ruby-on-rails - ActionView::Template::Error(application.css 未预编译):

javascript - ES6类中成员变量的声明

javascript - require.js 模块内的递归函数

css - Rails 5.2 背景图像不出现(使用 ERB 到 URL)

使用线程时,ruby 内存使用量永远增长