如何通过Rails管理中的自定义操作下载文件

时间:2016-10-01 19:13:23

标签: ruby-on-rails ruby rails-admin

如何通过Rails管理中的自定义操作下载文件。由于我发送的文件是ZIP格式,但在下载后,它会打开一个嵌套的zip文件,在开头创建另一个zip文件然后继续。

所以基本上这是我的自定义操作,我调用我的服务,它将通过gem rubyzip创建一个zip文件,并且我发送创建的zip文件的file_path是在我的本地机器(例如file_path为"#{Rails.root} /abc.zip")

        else
          # all your code that does the work
          import_params = params.require(:documents)
                                .permit(:email)

          if import_params[:email].present?
            @result = Download::Forms.call(mail_id: import_params[:email])
            if @result[:status]
              flash.now[:notice] = 'File Downloaded'
              send_file(
                    @result[:file_path],
                    filename: @result[:file_name],
                    type: "application/zip"
              )
            else
              flash.now[:error] = "Failed to Download because #{@result[:error_message]}"
            end
          else
            flash.now[:notice] = 'Please Enter Email Address'
          end
          @result
        end

因为我最后也发送了@result,所以我也可以尝试使用link_to方法下载文件,但都是徒劳的。我正在使用 Rails 4.2.6

有关文件类型的更多信息是我尝试了一个txt文件和一个pdf文件来检查它们是否正确下载但是它们下载的结果相同但是它们不适合作为txt文件没有任何内容,pdf无法打开。

使用自定义操作名称下载文件,而不是从文件名下载,如果我从任何简单的操作下载文件,则该文件名是正确的命名。

任何帮助都将非常感激。

0 个答案:

没有答案