在Rails显示页面下载PDF,每个显示不同的PDF

时间:2018-06-03 14:00:22

标签: ruby-on-rails pdf

我正在尝试在我创建的博客上添加PDF下载链接,但是我遇到了链接问题。

我咨询了几个SO帖子(例如thisthis)以获得尽可能多的信息,但看到我正在处理变量(因为我在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值,但我尝试过各种其他值。我目前在imagespublic中有一份PDF副本。

链接在页面上正确显示,但点击后,我得到:

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

有人可以帮忙解决这个问题吗?我哪里错了?

1 个答案:

答案 0 :(得分:1)

我认为你可以通过不同的方式轻松解决这个问题。该链接可以转到博客帖子本身:

startButton

更改路线:

startButton.addEventListener("click", function() {
    if (document.getElementById("t1-stop") != null) { 
        clearInterval(timeinterval);
        var stopButton = document.getElementById("t1-stop");
        startButton.removeChild(stopButton);
        startButton.innerHTML = START_BUTTON_INITIAL_TEXT;
        return; 
    }
    var timeInMinutes = minutesLabel.innerHTML,
        currentTime = Date.parse(new Date()),
        deadline = new Date(currentTime + timeInMinutes * 60 * 1000);
    initializeClock(deadline);
    startButton.innerHTML = ('<i id="t1-stop" class="far fa-stop-circle fa-2x float-right">');
});

然后更改控制器:

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