Ruby on rails 在RubyonRails中调用控制器函数时,如何保持相同的浏览器视图/页面?

Ruby on rails 在RubyonRails中调用控制器函数时,如何保持相同的浏览器视图/页面?,ruby-on-rails,Ruby On Rails,我有一个Rails应用程序,它在hompage上包含一个下载链接。单击时,它应该从AWS S3 bucket下载Excel报告 这是我的控制器功能: def下载 s3=Aws::s3::Resource.new(区域:“us-west-2”) obj=s3.bucket('mybucket').object(我的报告\文件\名称) 获取(响应\目标:我的\报告\文件\名称) 将“S3下载代码执行完成” 回应待办事项|格式| format.all{render:nothing=>true,状态::

我有一个Rails应用程序,它在hompage上包含一个下载链接。单击时,它应该从AWS S3 bucket下载Excel报告

这是我的控制器功能:

def下载
s3=Aws::s3::Resource.new(区域:“us-west-2”)
obj=s3.bucket('mybucket').object(我的报告\文件\名称)
获取(响应\目标:我的\报告\文件\名称)
将“S3下载代码执行完成”
回应待办事项|格式|
format.all{render:nothing=>true,状态::ok}
结束
结束
在我看来,我是这样认为的:


当我执行
render:nothing=>true,status::ok
时,如上所示,这就是发生的情况-当我单击主页上的下载链接时,会在新选项卡中打开一个空白浏览器页面

我不想发生这种事。我想调用我的控制器功能,并希望保持我的应用程序主页不变

我怎样才能做到这一点呢?

试试这个

  def download
  s3 = Aws::S3::Resource.new(region: 'us-west-2')
  obj = s3.bucket('mybucket').object( my_report_file_name)
  obj.get(response_target: my_report_file_name)

  puts "S3 download code execution complete"

  return

end
下载链接应该是远程的:true

<%= link_to 'download', download_path, remote: :true %>

试试这个

  def download
  s3 = Aws::S3::Resource.new(region: 'us-west-2')
  obj = s3.bucket('mybucket').object( my_report_file_name)
  obj.get(response_target: my_report_file_name)

  puts "S3 download code execution complete"

  return

end
下载链接应该是远程的:true

<%= link_to 'download', download_path, remote: :true %>


replace
response\u to
func with
return
Um您真的不想将发送到客户端吗?这里真正需要的是将
download
属性添加到链接中@马克斯-你能为你的观点提供一些例子吗?我对将下载的文件发送给客户非常感兴趣-是的。我正在使用链接到(我已经用我用于此的代码更新了问题)。我可以使用链接到的
链接中的
下载
属性吗?我当前的控制器方法将文件下载到服务器计算机中。只有
link_to
中的一个属性可以更改此行为并将文件下载到客户端浏览器而不是服务器机器上吗?请告知。请阅读我链接的mdn文档。“下载”属性只是更改链接的行为,使其打开下载提示,而不是尝试打开新页面。您可以通过传递散列来添加附加的html属性(link_to),请参见docs.replace
respond_to
func with
return
Um您真的不想发送到客户端吗?这里真正需要的是将
download
属性添加到链接中@马克斯-你能为你的观点提供一些例子吗?我对将下载的文件发送给客户非常感兴趣-是的。我正在使用链接到
(我已经用我用于此的代码更新了问题)。我可以使用链接到的
链接中的
下载
属性吗?我当前的控制器方法将文件下载到服务器计算机中。只有
link_to
中的一个属性可以更改此行为并将文件下载到客户端浏览器而不是服务器机器上吗?请告知。请阅读我链接的mdn文档。“下载”属性只是更改链接的行为,使其打开下载提示,而不是尝试打开新页面。您可以通过传递散列来添加带有链接的附加html属性,请参见文档。