2016-12-24 81 views
1

如何將csv文件中的數據顯示到Sinatra-App中?Sinatra Display CSV條目

西納特拉:

csv = CSV.read(data.csv) 
csv.each do |entry| 
@output = "#{entry[1]},#{entry[4]}:#{entry[0]}" 
end 

厄爾布:

<%= @data %> 

至極只顯示CSV文件的最後一行。

回答

0

您可能想要將for循環移至模板文件。

在西納特拉

@csv_data = CSV.read(data.csv) 

在ERB

<% @csv_data.each do |entry| %> 
    <%= entry[1] %>,<%= entry[4] %>:<%= entry[0] %> 
<% end %> 
+0

感謝,做工精細 – 8454

1

問題

有了這個代碼:

csv = CSV.read(data.csv) 
csv.each do |entry| 
@output = "#{entry[1]},#{entry[4]}:#{entry[0]}" 
end 

您遍歷所有CSV行。

對於每一行,塊定義了@output變量。

第一個csv行後,代碼只是覆蓋@output_variable

可能的解決方法

你需要map,不each

csv = CSV.read(data.csv) 
@data = csv.map do |entry| 
    "#{entry[1]},#{entry[4]}:#{entry[0]}" 
end 

然後可以使用

<%= @data %> 
在你的意見

@data現在是一個字符串數組,每個csv行有一個字符串。