我正在尝试创建这样的二维数组。。。
@transactions = {}
@expenses.each do |expense|
@transactions[expense.id.to_s + '-expense'] = {'identifier' => expense.id.to_s + '-expense', 'id' => expense.id, 'type' => 'expense', 'issued_on' => expense.issued_on, 'amount' => expense.amount}
end
@invoices.each do |invoice|
@transactions[invoice.id.to_s + '-invoice'] = {'identifier' => invoice.id.to_s + '-invoice', 'id' => invoice.id, 'type' => 'invoice', 'issued_on' => invoice.issued_on, 'amount' => invoice.total}
end
但是,当我迭代数组来创建行时,它会先给我键,然后像这样给整个数组。。。
- 1-expense
- identifier: 1-expense
id: 1
type: expense
issued_on: 2012-05-03
amount: 8.99
---
- 2-expense
- identifier: 2-expense
id: 2
type: expense
issued_on: 2012-05-25
amount: 4.96
---
- 3-expense
- identifier: 3-expense
id: 3
type: expense
issued_on: 2012-05-01
amount: 56.08
我迭代来创建行(当然,我应该做一些类似transaction.id或transaction.issued_on的事情,但我进行了调试,这样你就可以明白我的意思了)。。。
<% @transactions.each do |transaction| %>
<tr class="<%= cycle("odd", "even") %>">
<td>
<%= debug transaction %>
</td>
<td></td>
<td></td>
<td></td>
</tr>
<% end %>
所以我最终得到了一张这样的桌子。。。
| 1-expense |
| identifier: 1-expense, id: 1, type: expense, issued_on: 2012-05-03, amount: 8.99 |
| 2-expense |
| identifier: 2-expense, id: 2, type: expense, issued_on: 2012-05-25, amount: 4.96 |
| 3-expense |
| identifier: 3-expense, id: 3, type: expense, issued_on: 2012-05-01, amount: 56.08 |
当我的桌子看起来像这个
| identifier: 1-expense, id: 1, type: expense, issued_on: 2012-05-03, amount: 8.99 |
| identifier: 2-expense, id: 2, type: expense, issued_on: 2012-05-25, amount: 4.96 |
| identifier: 3-expense, id: 3, type: expense, issued_on: 2012-05-01, amount: 56.08 |
我不知道如何用事务数据行创建一个简单的表,而不是用散列键创建那些额外的行。
您使用{}
语法创建了一个散列,而不是数组。
如果你只想迭代散列的值(没有密钥),你可以这样做:
<% @transactions.each_value do |transaction| %>
...
或者,您可以使用一个数组来保存行:
@transactions = []
@expenses.each do |expense|
@transactions << {'identifier' => expense.id.to_s + '-expense', 'id' => expense.id, 'type' => 'expense', 'issued_on' => expense.issued_on, 'amount' => expense.amount}
end
@invoices.each do |invoice|
@transactions << {'identifier' => invoice.id.to_s + '-invoice', 'id' => invoice.id, 'type' => 'invoice', 'issued_on' => invoice.issued_on, 'amount' => invoice.total}
end
然后你现有的erb模板应该会更好地工作。