我正在尝试将简单的CSV文件读入HTML表格以便在浏览器中显示,但我遇到了麻烦。这就是我正在尝试的:
控制器:
def show
@csv = CSV.open("file.csv", :headers => true)
end
查看:
<% @csv.read %>
<% @csv.headers.each do |head| %>
<%= head %>
<% end %>
<table border="1">
<% @csv.each do |row| %>
<tr>
<% row.each do |element| %>
<td> <%= element %> </td>
<% end %>
</tr>
<% end %>
</table>
输出:
Name Start Date End Date Quantity Postal Code
基本上我只获取标题,并且不会读取和呈现CSV正文。
答案 0 :(得分:9)
最终成为最终解决方案:
控制器:
def show
# Open a CSV file, and then read it into a CSV::Table object for data manipulation
@csv_table = CSV.open("file.csv", :headers => true).read
end
查看:
<table border="0" cellspacing="5" cellpadding="5">
<tr>
<% @csv_table.headers.each do |header| %>
<th><%= header %></th>
<% end %>
</tr>
<% @csv_table.each do |row| %>
<tr>
<% row.each do |element| %>
<td><%= element[1] %></td>
<% end %>
</tr>
<% end %>
</table>
将CSV读入表中是正确的方法,但在迭代行时,我必须指定element[1]
,因为element
实际上是{{1}的数组}。
答案 1 :(得分:0)
我能够做同样的事情但不需要使用&#34; .read&#34;
def show
# Open a CSV file, and then read it into a CSV::Table object for data manipulation
@csv_table = CSV.open("file.csv", :headers => true)
end
并使用元素的键/值。
<% @csv_table.each do |row| %>
<tr>
<% row.each do |key, value| %>
<td><%= value %></td>
<% end %>
</tr>
<% end %>