0

我正在关注 Rob Conery 在他的 Tekpub/Rails 3 教程视频中。我认为视频版本 (1.1) 中的 Rack 版本和我机器上的版本 (1.4.5) 之间发生了一些变化。我不知道如何弄清楚我需要做些什么不同的事情。

在下面的代码中,我有一个字符串变量out,并试图将一个字符串变量(MyApp.Call方法返回的数组的第三个元素)连接到它上面。

class EnvironmentOutput

  def initialize(app)
    @app = app
  end

  def call(env)
    out = ""

    unless(@app.nil?)
      response = @app.call(env)[2]

      # The Problem is HERE (Can't Convert Array to String):
      out+=response
    end

    env.keys.each {|key| out+="<li>#{key}=#{env[key]}"}
    ["200", {"Content-Type" => "text/html"}, [out]]
  end

end

class MyApp
  def call(env)
    ["200", {"Content-Type" => "text/html"}, ["<h1>Hello There</h1>"]]    
  end
end

use EnvironmentOutput
run MyApp.new

但我得到了错误:

"Can't Convert Array to String" at `out+=response` 

我在这里想念什么?

4

1 回答 1

2

您正在尝试将字符串添加到数组中。第三个元素

["200", {"Content-Type" => "text/html"}, ["<h1>Hello There</h1>"]] is ["<h1>Hello There</h1>"]

是一个数组。

您可以将该数组更改为带有连接的字符串:

response = @app.call(env)[2].join
于 2013-04-22T03:04:04.510 回答