可以从控制器重定向一些网址,同时在新窗口中打开网址吗?
答案 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片段以便等待元素加载