0

我是 Ruby on Rails 的新手。我正在使用 Ruby 2 和 Rails 4。我想使用 rails 下载文件。但是当我输入路径时,它不会显示 html 页面,而是会打开一个下载框并单击“确定”它会下载。我的代码如下。如果有任何机构可以,请帮助我。谢谢你。

在控制器中:

def download
  send_file(
    "#{Rails.root}/public/robots.txt",
    filename: "robots.txt",
    type: "application/txt"
  )
end

在 download.html.erb 中:

<%= link_to 'Download', academics_download_path(:format => "txt")  %>
4

1 回答 1

0

对于每个请求,您只能做出一个响应。发送文件是一个响应,所以你不能做任何其他事情——视图甚至没有被渲染。

如果要先显示页面,则需要创建一个新操作来显示 html 页面,然后再创建一个新操作来发送文件。

# controller

def download_file
  send_file(
    "#{Rails.root}/public/robots.txt",
    filename: "robots.txt",
    type: "application/txt"
  )
end

def download
end

# view
<%= link_to 'Download', academics_download_file_path(:format => "txt")  %>

请记住也要更新您的路线(需要重新启动服务器)

于 2014-05-12T10:31:30.390 回答