インターネットを見回してみたが、PDF in Railsの表示方法がわからない1)。
誰かがどのコード/宝石を表示する必要があるか知っていますか?
コントローラで:
def pdf
pdf_filename = File.join(Rails.root, "tmp/my_document.pdf")
send_file(pdf_filename, :filename => "your_document.pdf", :type => "application/pdf")
end
config/environment/production.rb
:
config.action_dispatch.x_sendfile_header = "X-Sendfile" # for Apache
または
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
Webサーバーがディスクから直接ファイルを送信できるようにするため、構成の変更が必要です。これにより、パフォーマンスが向上します。
更新
ダウンロードせずに表示する場合は、:disposition
のsend_file
オプションを使用します。
send_file(pdf_filename, :filename => "your_document.pdf", :disposition => 'inline', :type => "application/pdf")
インラインで表示したい場合、 この質問 は、私がこれまでよりもはるかに完全になります。
基本的には、ビューのhtmlに書き込むだけです。したがって、この簡単な解決策は私にとってうまくいきました:
「show.hmtl.erb」内
<iframe src=<%= @certificate.certificate_pdf %> width="600" height="780" style="border: none;"> </iframe>
埋め込まれたRubyにファイルの場所を置くだけで、iframeタグのソースは何時間も何時間も検索した後で私のために機能しました。'certificate 'は私のモデルであり、' certificate_pdf 'は私の添付ファイルです。
PDFがどこから来たかに応じて、以下が役立つかもしれません。私はたくさんの物を保存するアプリケーションを持っています、そしてそれらのいくつかはアイテムに(追加の)PDFが接続されています。保存しますディレクトリ_/public/res/<item_id>/
_の項目res
は結果を意味し、_item_id
_はRailsでのその項目の数値IDです。
ビューでは、ビューで使用できるヘルパーメソッドとして、次の(疑似)コードによってPDFへのリンクを提供します。
_def file_link(key, name = nil)
res= Ressource.find(:first, :conditions => ["key = ?", key])
list = Dir["public/res/#{res.id}/*"]
file= list.empty? ? "" : list[0]
return file if file.empty?
fn = name ? name : File.basename(file)
link_to fn, "/res/#{res.id}/#{File.basename(file)}", :popup => true
end
_
ここでの関連部分はlink_to name, "/res/#{res.id}/#{File.basename(file)}"
です。
これは単純すぎるかもしれませんが、私の問題に対する簡単な答えを見つけるのに苦労したので、ここに投稿します。静的ファイルをダウンロードするためだけに、コントローラーに別のアクションを追加したくありませんでした。
私はファイルをS3にアップロードし、パスを参照するlink_toを使用しました。ファイルをアップロードして権限を設定した後、S3が提供するパスを使用します(全員がファイルをアップロードおよびダウンロードできる必要があります)。私はS3にアプリのデータをたくさん保存しているので、それは良い選択のように思えました。
<%= link_to "speaker registration form", "https://s3.amazonaws.com/gws_documents/speaker_registration.pdf" %>
def pdf
pdf_content = ...# create the pdf
send_data(pdf_content, :filename => "test.pdf", :type => "application/pdf")
end