弹出/新窗口+ Redirect_to + Rails

时间:2009-10-13 10:52:47

标签: ruby-on-rails

可以从控制器重定向一些网址,同时在新窗口中打开网址吗?

3 个答案:

答案 0 :(得分:6)

不是来自控制器的动作。

重定向是一个HTTP响应,其中包含301/302状态代码和Rails中的空主体。由于正文是空的,因此您无法为浏览器添加额外处理(例如javascript等以打开新窗口)。

假设您通过另一个页面上的超链接触发了控制器操作,您最好的选择是在新窗口中打开它。然后将显示重定向目标。

或者,或者再次渲染相同的页面作为常规响应(无重定向),并在页面加载时插入一些javascript以打开新窗口

答案 1 :(得分:3)

@madlep“你最好的选择是在新窗口打开”

谢谢你。效果很好!

观点:

<%= link_to "Buy this product", buy_path, target: "_blank" %>

控制器:

def buy
  ...
  redirect_to link
end

答案 2 :(得分:1)

搜索了一下,发现了一个解决方案...它不在控制器上(我原本想要的但是很容易......)在你看来:

<%= link_to '', {:controller => 'assignments', :action => 'overall_report_gen', :evaluator_relations => @evaluator_relations}, :target => '_blank', :id => 'reporte' %>

<script language="JavaScript">
  document.getElementById('reporte').click();
</SCRIPT>

所以,''中的link_to作为显示字符串,您会看到一个不可见的链接,

使用:target => '_blank'链接,点击后将在新窗口中打开

并且需要:id => 'reporte'才能点击带有javascript的链接。

所以只需将相同的ID放在link_to和javascript中的字符串中,就是这样

记得在link_to之后放置javascript片段以便等待元素加载