2

当我执行某个操作时,我正在尝试打开一个页面。所以在我的控制器中,我有以下内容:

class Controller < ApplicationController
  require 'open-uri'

  def action
    open("http://www.google.com") #if i use this, it just goes to my action page
    open("www.google.com") #if i use this, it gives the error
  end
end

错误:

Errno::ENOENT in Controller#action
  No such file or directory - www.google.com

我发现的所有解决方案都说包括需要'open-uri',我相信我做到了。我在这里做错了什么?

编辑:
对不起,我应该更清楚。我可能必须在新选项卡中打开多个页面,这就是为什么我决定使用 open 而不是 redirect_to。例如:

class Controller < ApplicationController
  require 'open-uri'

  def action
    open("http://www.google.com")
    open("http://www.yahoo.com")
  end
end

这样做会同时打开 google.com 和 yahoo.com。

4

2 回答 2

2

open通常用于让您的服务器访问外部站点(并可能解析响应)。它不允许您重定向您的用户。为了与客户端交互,您需要使用视图 + javascript。

<%= link_to @url, target: "_blank" %>对于您想要的每个页面,然后通过 javascript 自动单击它们。

有关更多信息,请参阅:如何以编程方式单击带有 javascript 的链接?

如果用户没有启用 JS,则将链接显示为后备。另请参阅此问题:Ruby/Rails - 在新窗口中从控制器打开 URL

于 2013-07-16T22:06:10.103 回答
1

您可能必须使用以下协议:

http://....
于 2013-07-16T22:03:42.557 回答