从网址中删除控制器操作名称

时间:2018-11-27 01:47:20

标签: ruby-on-rails ruby ruby-on-rails-5

我遇到的可能是一个简单的问题,但对此却有些挣扎。我的控制器中有一个操作,当在视图中单击按钮时,该操作会下载pdf。下载PDF,但问题是单击它后,操作仍然保留在浏览器中,并在每次重新加载页面时下载PDF。

URL示例

在我点击按钮之前

https://matrix-spam-camp.c9users.io

单击按钮后,它将保留在URL中,直到从浏览器中手动将其删除为止。

https://matrix-spam-camp.c9users.io/download_pdf

/app/app/views/portfolio/main.html.erb(链接)

<%= link_to download_pdf_path, class: 'download-btn', remote: true do %>
    <%= image_tag('img_btn_icon.png') %> <span class='resume-btn-text'>Resume</span>
<% end %>

/app/app/controllers/portfolio_controller.rb

def download_pdf
  send_file "#{Rails.root}/app/assets/docs/resume.pdf", type: "application/pdf", x_sendfile: true
end

/app/config/routes.rb

get 'download_pdf', to: "portfolio#download_pdf"

在此问题上的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

所以我能够通过在target: _blank上添加link_to来解决此问题。

<%= link_to :download, class: 'download-btn', target: "_blank" do %>
    <%= image_tag('img_btn_icon.png') %> <span class='resume-btn-text'>Resume</span>
<% end %>

这可防止下载按钮将link_to所调用的控制器动作的名称应用到浏览器URL中。