打开(“url或文件名”),要求'open-uri'不在轨道上使用ruby

时间:2013-07-16 22:01:22

标签: ruby-on-rails ruby open-uri

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

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&#39;我相信我做过。我在这里做错了什么?

编辑:
对不起我应该更清楚了。我可能必须在新标签页中打开多个页面,这就是为什么我决定使用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。

2 个答案:

答案 0 :(得分:2)

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

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

有关详情,请参阅:How do I programmatically click a link with javascript?

如果用户未启用JS,则将链接显示为后备。另请参阅此问题:Ruby/Rails - Open a URL From The Controller In New Window

答案 1 :(得分:1)

你必须使用协议:

http://....