3

当我使用 Selenium 运行测试时,我的一步失败,页面在浏览器中如下所示:

Internal Server Error

can't convert nil into String
WEBrick/1.3.1 (Ruby/1.9.2/2010-08-18) at 127.0.0.1:50752

当我用 culerity 运行它时,我得到了输出:

    Broken pipe (Errno::EPIPE)
          /Users/yuval/.rvm/gems/ruby-1.9.2-p0/gems/culerity-0.2.15/lib/culerity/remote_object_proxy.rb:47:in `write'
etc...

当我在没有 js 驱动程序的情况下运行它时,它根本不会失败(相反,它在使用 js 时会失败,这就是我尝试使用 js 驱动程序运行它的原因)。

有任何想法吗?

4

1 回答 1

7

我刚刚遇到同样的问题,但找到了解决方案。

如果您尝试在开发模式下使用“http://127.0.0.1:3000”而不是“http://localhost:3000”打开浏览器,您应该会遇到同样的问题。

在我的情况下,问题是由于在我的视图文件中我使用了“request.domain”,如果请求以类似 IP 的格式给出,则返回 nil,即“http://127.0.0.1:50752”。

因此,如果在您的辅助方法视图中的某个地方,您有类似的东西

link_to "Click me", :host => subdomain + "." + request.domain + request.port_string

您可以将其更改为使用辅助方法,如下所示:

link_to "Click me", :host => with_host(subdomain)

和如下助手:

  def with_host(subdomain)
    if request.domain.present?
      subdomain + "." + request.domain + request.port_string
    end
  end

这是对我有用的最简单的解决方案。也许,你有类似的东西。

于 2011-04-20T05:38:01.383 回答