2016-09-09 4 views
0

Попытка показать PDF путем связывания с URL из www.testsite.com/documents/sample.pdfПоказать PDF в Ruby On Rails активов

Я использую скрепку, чтобы загрузить 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) %>, я получаю эту ссылку:
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 

Я не уверенный, что я буду делать это правильно.

Любые предложения были бы замечательными.

+0

вы можете поделиться своим файлом маршрута. –

+0

@Udaykumardas Я поставил суть этого вопроса в вас. Но в основном я просто включаю этот файл в класс под названием «Документ». 'Document' имеет': name,: description,: file, 'и': slug'. Файл: файл загружается в папку 'assets/documents /'. Здесь я хотел бы получить доступ к pdf-файлу, но с использованием URL-адреса, например: www.testsite.com/documents/sample.pdf – Corey

ответ

1

Меняйте ссылка

<%= 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

+0

Это работает отлично! Часть контроллера документов была там, где я действительно боролся, спасибо! – Corey

Смежные вопросы