2016-09-23 8 views
0

ウェブアプリケーションで作業しており、この「登録」ページがあります。私はショーページにアクセスしたときにpdfページをレンダリングしたい。しかし、私がショーボタンをクリックすると、通常のHTMLページがロードされ、その内容はダンプのように見えますが、すべて不気味です(ここではコンテンツの要点です:https://gist.github.com/anonymous/0806200b7ca31bba35d3a514a7ff90e6)。しかし、私はページをリフレッシュすると、PDFを完全にレンダリングします。Wicked PDF生成ページ更新のみ

URLとparamsに違いはありますが、すべて同じであることを確認しました。私もインスタンス変数をチェックし、それらは同じでした。私はその問題を探検し、それについて何も見つけられませんでした。私はpdfファイルでバーコードを生成していますので注意したい

respond_to do |format| 
    format.html do 
    render pdf: 'customer_print_out.pdf', 
    file: "#{Rails.root}/app/views/pdf/customer_print_out.pdf.erb", 
    page_size: 'A4', 
    encoding: 'UTF-8' 
    end 
end 

:ここ

は、showアクションでレンダリングコードです。また、ページを更新するときに正しく読み込まれ、コードを生成するバーコードを削除しても同じ問題が発生します。

使用しています: Rails v4.2.6, wicked_pdf v1.1.0, puma v3.6.0

をすべてのヘルプやポインタが、本当に感謝しています。私はあなたの代わりにformat.html

format.pdf do 
    render pdf: 'customer_print_out.pdf', 
    file: "#{Rails.root}/app/views/pdf/customer_print_out.pdf.erb", 
    page_size: 'A4', 
    encoding: 'UTF-8' 
    end 

format.pdfを使うべきだと思う

+1

なぜあなたはPDFファイルをレンダリングしますHTML形式ですか?代わりに 'format.pdf'を使用する必要があります – dpaluy

+1

あなたはpdfのフォーマットを追加する必要がありますhttp://stackoverflow.com/questions/357212/rails-convert-html-to-pdf/32992165#answer-32992165 –

答えて

1

のようなものをフォーマットを指定することを忘れないでください、次の手順を実行します。

config/initializers/mime_types.rbファイル:あなたのコントローラで

Mime::Type.register "application/pdf", :pdf

次の操作を行います

class YourController < ApplicationController 
    def show 
    @product = Product.first 

    respond_to do |format| 
     format.html 
     format.pdf do 
     render pdf: 'customer_print_out.pdf', 
       file: "#{Rails.root}/app/views/pdf/customer_print_out.pdf.erb", 
       page_size: 'A4', encoding: 'UTF-8' 
     end 
    end 

    end 
end 

要求には、例えば、pdf形式である必要があります。your_controller_path(format: :pdf)

+0

私は必要ありませんでしたpdf Mimeタイプを追加する。それはすでにそこにあった。私は "警告:既に初期化された定数Mime :: PDF"を持っています。宝石にはそれが含まれているはずです。 – Homoud

1

も、あなたのボタンのコードにpdfとしてPDFファイルをレンダリングするために

<%= link_to('Show', your_show_action_path(format: :pdf)) %> 
関連する問題