Скачать PDF в Rails Show Page с разными PDF на шоу - PullRequest
0 голосов
/ 03 июня 2018

Я пытаюсь добавить ссылку на скачивание PDF в блог, который я создал, и у меня возникают проблемы со ссылками.

Я просмотрел несколько SO сообщений (например, this и это ), чтобы продвинуться так далеко, как у меня, но, видя, как я работаю с переменными (потому что я на blogs#show, они только меня дошли.

В моей форме,У меня есть @blog.link_text для точного текста ссылки, который должен отображаться на странице (например, «Загрузить PDF для печати для заметок») и @blog.link_filename для хранения пути к PDF, который следует загрузить.

Вкл. blogs#show У меня есть следующая ссылка в ERB:

  <h3>
    <%= link_to download_pdf_path(@blog.link_filename), type: "application/pdf" do %>
      <%= @blog.link_text %>
    <% end %>
  </h3>

Тогда в моем routes.rb У меня есть это:

  get "download_pdf", to: "blogs#download_pdf"

Наконец, в моем blogs_controller.rb У меня естьметод download_pdf:

  def download_pdf(filename)
    send_file filename, type: "application/pdf"
  end

В настоящее время у меня "app/assets/images/house_tour_notes.pdf" в качестве значения @blog.link_filename, но я пробовал множество других значений. В настоящее время у меня есть копия PDF в images и в public.

Ссылка правильно отображается на странице, но когда она нажимается, я получаю:

No route matches [GET] "/download_pdf.%22app%2Fassets%2Fimages%2Fhouse_tour_notes.pdf%22"

Может кто-нибудь помочь устранить неполадку? Где я?идет не так?

1 Ответ

0 голосов
/ 03 июня 2018

Я думаю, вы можете легко это исправить, если подойти к нему по-другому.Ссылка может идти на сам пост:

<h3>
  <%= link_to download_pdf_path(@blog), type: "application/pdf" do %>
    <%= @blog.link_text %>
  <% end %>
</h3>

Изменить маршрут:

get "blogs/:id/download_pdf", controller: 'blogs', action:'download_pdf', as: 'download_pdf'

Затем изменить контроллер:

def download_pdf
  @blog = Blog.find(params[:id])
  send_file Rails.root.join(@blog.filename), type: "application/pdf"
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...