【问题标题】:Ruby on Rails/Rack 1.4.5 return from Call Method / Can't Convert String to ArrayRuby on Rails/Rack 1.4.5 从调用方法返回/无法将字符串转换为数组
【发布时间】:2013-04-22 02:57:45
【问题描述】:

我正在关注 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` 

我在这里错过了什么?

【问题讨论】:

    标签: ruby ruby-on-rails-3 rack


    【解决方案1】:

    您正在尝试将字符串添加到数组中。

    的第三个元素
    ["200", {"Content-Type" => "text/html"}, ["<h1>Hello There</h1>"]] is ["<h1>Hello There</h1>"]
    

    是一个数组。

    你可以通过 join 将该数组更改为字符串:

    response = @app.call(env)[2].join
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-13
      • 2017-09-12
      • 1970-01-01
      • 2013-05-31
      • 1970-01-01
      • 2012-06-18
      • 1970-01-01
      相关资源
      最近更新 更多