respond_to 生成 2 个或更多 pdf

respond_to generate 2 or more pdfs

我正在使用 rails 和 prawn pdf 生成 pdf 格式的报告

我想问一下是否可以从一个控制器生成 2 个或更多 pdf 文档(我正在使用 respond_to 生成 pdf)

下面是我目前只能生成一个pdf的控制器, 我需要为所有者和最终用户创建不同格式的 pdf

谢谢

  def show
    @family = Family.find(params[:id])

    
    respond_to do |format|
      format.html
      format.pdf do
        pdf = familyPdf.new(@family) 
        send_data pdf.render, filename: "family_#{@family.father_name}.pdf",
                              type: "application/pdf",
                              disposition: "inline"
      end
    end
  end

您可以使用 if/else 语句

def show
  @family = Family.find(params[:id])


  respond_to do |format|
    format.html
    format.pdf do
      if current_user.is_owner?
        pdf = familyPdf.new(@family) 
        send_data pdf.render, filename: "family_#{@family.father_name}.pdf",
                              type: "application/pdf",
                              disposition: "inline"
        return
      else
        ...
        code for formatting pdf for end user goes here
        ...
      end
    end
  end
end

您一次只能下载一个文件。要在一次操作中生成并发送多个文件,您必须将它们合并到 zip 文件夹中。要生成 zip 文件,您可以使用 ruby​​zip gem https://github.com/rubyzip/rubyzip

这里也有一篇很好的文章可以做到这一点 http://thinkingeek.com/2013/11/15/create-temporary-zip-file-send-response-rails/