在 Rails 项资产的 Ruby 中显示 PDF
Show PDF in Ruby on Rails assets
尝试通过 linking 到 www.testsite 的 URL 来显示 pdf com/documents/sample.pdf
我正在使用回形针上传 pdf,可以看到 pdf 在那里。
has_attached_file :file,
:url => ":rails_root/documents/:filename",
:path => ":rails_root/public/assets/documents/:id/:filename"
validates_attachment :file, :content_type => {:content_type => %w(image/jpeg image/jpg image/png application/pdf application/msword application/vnd.openxmlformats-officedocument.wordprocessingml.document)}
我也在使用 gem 'friendly_id'
,这样我就可以使用描述和名称搜索我上传的 sample.pdf 文件实例。
虽然进入那个页面(http://localhost:3000/documents/sample.pdf
),但我得到:
Missing template /document with {:locale=>[:en], :formats=>[:pdf], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}
我猜它与 :formats=>[:pdf]
有关。
当我创建一个 <%= link_to "document", asset_path(document.file.url) %>
时,我得到这个 link:
http://localhost:3000/Users/user/Desktop/testsite/documents/sample.pdf?1473447505
我更想成为:
http://localhost:3000/documents/sample.pdf
我的路线文件:
Rails.application.routes.draw do
resources :documents
root 'main_pages#home'
get 'home' => 'main_pages#home'
get '*path' => redirect('/')
end
我不确定我是否以正确的方式进行此操作。
任何建议都很好。
改变你的 link
<%= link_to "document", asset_path(document.file.url) %>
到
<%= link_to "document", document_path(document) %>
然后在documents_controller.rb
def show
send_file(document.file.url, :filename => "your_document.pdf", :disposition => 'inline', :type => "application/pdf")
end
检查这个问题,以防它要求下载 PDF 文件
Forcing the inline rendering of a PDF document in Rails
尝试通过 linking 到 www.testsite 的 URL 来显示 pdf com/documents/sample.pdf
我正在使用回形针上传 pdf,可以看到 pdf 在那里。
has_attached_file :file,
:url => ":rails_root/documents/:filename",
:path => ":rails_root/public/assets/documents/:id/:filename"
validates_attachment :file, :content_type => {:content_type => %w(image/jpeg image/jpg image/png application/pdf application/msword application/vnd.openxmlformats-officedocument.wordprocessingml.document)}
我也在使用 gem 'friendly_id'
,这样我就可以使用描述和名称搜索我上传的 sample.pdf 文件实例。
虽然进入那个页面(http://localhost:3000/documents/sample.pdf
),但我得到:
Missing template /document with {:locale=>[:en], :formats=>[:pdf], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}
我猜它与 :formats=>[:pdf]
有关。
当我创建一个 <%= link_to "document", asset_path(document.file.url) %>
时,我得到这个 link:
http://localhost:3000/Users/user/Desktop/testsite/documents/sample.pdf?1473447505
我更想成为:
http://localhost:3000/documents/sample.pdf
我的路线文件:
Rails.application.routes.draw do
resources :documents
root 'main_pages#home'
get 'home' => 'main_pages#home'
get '*path' => redirect('/')
end
我不确定我是否以正确的方式进行此操作。
任何建议都很好。
改变你的 link
<%= link_to "document", asset_path(document.file.url) %>
到
<%= link_to "document", document_path(document) %>
然后在documents_controller.rb
def show
send_file(document.file.url, :filename => "your_document.pdf", :disposition => 'inline', :type => "application/pdf")
end
检查这个问题,以防它要求下载 PDF 文件
Forcing the inline rendering of a PDF document in Rails