2013-11-27 3 views
1

Я недавно начал возиться с Синатрой, и я столкнулся с чем-то, что я не могу оборачивать вокруг.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, например. Может ли кто-нибудь объяснить, почему это так?

С уважением,

Дэвид

ответ

2

Это происходит потому, что CSV.foreach возвращает nil значение.

Пробег: CSV.read("file"). Это вернет массив массивов со значениями файлов.

+0

Любых намеки о том, как перебрать этот массив массивов в идиоматическом, чистом способе? – davidl

+0

Что это значит? Вы можете использовать метод 'each' для перемещения массива, как и любой другой массив. –

+0

Ну, повторяя это так: '@posts = CSV.read (" file ") @ posts.each do | post | post [0] 'выводит ошибку:' undefined method 'bytesize' для # '. Думаю, я делаю это неправильно ..: P – davidl

0

Как говорит Тьяго, вы получаете нулевое значение из метода CSV.foreach.

Альтернатива ...

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 
Смежные вопросы