0

このリモートフォームは静的ページにあります。

<%= form_tag(reports_products_path, :method => "post", :action => "products", :remote => true)  do%>
   <%= submit_tag "Generate Product Report" %>
<% end %>

これは、そのフォームが送信されたときに実行されるコントローラー アクションです。

def products
  @products = Product.joins(:client).all
  respond_to do |format|
    format.html
    format.pdf
    format.js do
      pdf = PrintedProductPdf.new(@products)
      File.open("public/product_report/product#{Date.today}.pdf", "wb") { |f| f << pdf.render }
      send_data pdf.render, 
        file_name: "public/product_report/product#{Date.today}.pdf",
        :type => "application/pdf", 
        :disposition => "attachment"
  end
end

終わり

フォームのリンクをクリックすると、ファイルが書き込まれます。ただし、フォームの送信ボタンがクリックされたときにファイルをダウンロードする機能が必要です。データ送信機能でララランドに添付ファイルを送信しているようです

4

1 に答える 1

0

メソッドのこのコードを試してください。

def products
  @products = Product.joins(:client).all
  respond_to do |format|
    format.html
    format.pdf
    format.js do
      pdf = PrintedProductPdf.new(@products)
      send_data pdf.render,
                :disposition => "attachment; filename=product_#{Date.today.to_s}.pdf",
                :type => "application/pdf"
    end
  end
end

PS私はpdfファイルをパブリックディレクトリに保存するのをやめました。ダウンロードリンクのためだけに作成しているようです。

于 2012-09-18T20:27:32.147 に答える