Ruby / Rails – 在新窗口中从控制器打开URL
我在我的应用程序控制器中,我有一个url字符串。 如何告诉应用程序在新窗口中打开浏览器中的URL。 有没有办法将目标设置为空白?
例如
def link @url = 'www.google.com' ****??? Open @url ?? *** with target blank? end
这不可能直接来自控制器。 使用redirect_to @url
具有在同一“窗口”中打开URL的效果,因为它只是将HTTP重定向指令发送回浏览器。 redirect_to
无法打开新窗口。 控制器驻留在服务器端,打开一个新窗口属于客户端。
一些选择:
a)使用<%= link_to 'Google', 'https://stackoverflow.com/questions/7855629/ruby-rails-open-a-url-from-the-controller-in-new-window/google.com', :target => '_blank' %>
或Google
呈现链接用户可以在新视图中单击
b)使用JavaScript自动打开链接,但要注意浏览器可能会将其视为弹出窗口并阻止它
通过组合这些选项,您可以在新窗口中为允许它的浏览器/用户打开链接,并在不起作用的情况下回退到常规URL。
正如其他人指出的那样,你不能(也不应该)在控制器中执行此操作。 在视图中,您可以使用
<%= link_to @url, :target => "_blank" %>
好吧,并不是你不能这样做,这只是一个复杂的过程。 我在一个正在研究的项目中这样做了。 基本上,它是Rails善与Javascript的混合体。 我只是在创建实例时传递了一个flash通知,然后使用脚本将flash通知设置为等于js变量和redirect_url。 如果该页面上弹出该特定闪存通知,则会在js脚本中重定向。 就像我说的那样,它是hack hack hack ,但它适用于我的目的。
您无法在rails中执行此操作,因为您的脚本正在服务器上执行。 使用Javascript在客户端使用浏览器。