如何使用Ruby将CSV文件读入HTML表格?

时间:2013-08-08 16:31:12

标签: ruby parsing csv erb

我正在尝试将简单的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正文。

2 个答案:

答案 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 %>