Ruby 西纳特拉没有';我不提供任何输出

Ruby 西纳特拉没有';我不提供任何输出,ruby,sinatra,Ruby,Sinatra,我最近开始和西纳特拉混在一起,我遇到了一些我不能完全理解的事情 get '/lnb/:date' do CSV.foreach("/home/dlind/code/noak/lnb/#{params[:date]}_lnb.csv") do |post| "#{post}" end end 访问http://localhost/lnb/2013-11-23例如。谁能解释一下为什么会这样 问候, David发生这种情况是因为CSV.foreach返回nil值 尝试

我最近开始和西纳特拉混在一起,我遇到了一些我不能完全理解的事情

get '/lnb/:date' do
    CSV.foreach("/home/dlind/code/noak/lnb/#{params[:date]}_lnb.csv") do |post|
        "#{post}"
    end
end
访问
http://localhost/lnb/2013-11-23
例如。谁能解释一下为什么会这样

问候,


David

发生这种情况是因为
CSV.foreach
返回
nil


尝试
CSV.read(“文件”)
。这将返回一个包含文件值的数组。

正如Thiago所说,您将从CSV.foreach方法中获得一个nil值

另一种选择

get '/lnb/:date' do
  my_output = String.new
  CSV.foreach("/home/dlind/code/noak/lnb/#{params[:date]}_lnb.csv") do |post|
    my_output << "#{post}\n"
    end
  my_output
end
get'/lnb/:date'do
my_output=String.new
foreach(“/home/dlind/code/noak/lnb/#{params[:date]}{u lnb.CSV”)do|post|

my_输出关于如何以惯用、干净的方式迭代这个数组的任何提示?你是什么意思?您可以像使用任何其他数组一样使用
每个
方法遍历该数组。好吧,像这样迭代:
@posts=CSV.read(“file”)@posts.each do | post | post[0]
呈现错误:
未定义的方法“bytesize”for#
。我想我做错了确切地说,你想打印什么?第一列?选择第一列并连接值:
@posts.map{| post | post[0]}.join(',')