2014-09-02 23 views
0

IM上的应用程序工作在轨定的行动,需要以下条件:如何执行这两种渲染和重定向在轨

  1. 点击一个按钮应该先下载一个PDF文件(渲染部分)和
  2. 然后重定向到一个显示页面(redirect_to的部分)

我已经在网上搜索,发现这是不可能的渲染,并在同一时间给定动作重定向,是没有解决这个办法问题 ?

+0

你可以使用两个函数,1渲染和另一个重定向 – 2014-09-02 07:04:24

+0

这是一个坏方法,但你可以使用'if(something)render else redirect_to'这个东西更好用'respond_to do | format | format.html {redirect_to ...} format.json {render @users} end' – 2014-09-02 07:08:33

+3

这不仅仅是一个rails限制 - 对于一个http请求,只能有一个响应 – 2014-09-02 07:10:53

回答

0

send_data使用渲染,所以你不能在你的控制器之后做任何事情。

要做到这一点,你必须使用JavaScript:

  1. 创建按钮点击一个iframe中。 (这持有你的下载过程)。

  2. 在iframe关闭事件上重定向页面。

您也可以使用后台作业进行下载操作,但我还没有使用它。

0

您可以将用户发送到结果页面并添加元标记,以在x秒后将用户重定向到下载。

<meta http-equiv="refresh" content="5; url=http://path_to/your/download.zip"/> 

这是您在很多网站上看到的方法,例如sourceforge.net(你的下载将在x秒后开始...)