#ruby-on-rails #ruby
#ruby-on-rails #ruby
Вопрос:
Я хочу создать таблицу следующим образом,
<table>
<tr>
<th>Column1</th>
<th>Column2</th>
<th>Independent Column</th>
</tr>
<tr>
<td>a</td>
<td>1</td>
<td>i1</td>
</tr>
<tr>
<td>b</td>
<td>2</td>
<td>i2</td>
</tr>
<tr>
<td>c</td>
<td>3</td>
<td>i3</td>
</tr>
<tr>
<td></td>
<td></td>
<td>i4</td>
</tr>
<tr>
<td></td>
<td></td>
<td>i5</td>
</tr>
</table>
где столбцы 1 и 2 являются данными из переменной @a
и Independent Column
содержат данные из @b
. Я хочу, чтобы они отображались в одной таблице, поэтому я не могу зацикливать их по отдельности как @a.each
и @b.each
.
Любая идея, чтобы помочь мне.
Комментарии:
1. Как
@a
и@b
выглядят?2. В чем разница между
column 1
иColumn1
?3. Вы пробовали объединить
@a
и@b
?4.
@a.zip(@b).each { |a, b| ... }
5. @ a и @ b имеют разный размер, это моя проблема
Ответ №1:
Вы можете выполнить итерацию над первым, отслеживая индекс, и получить значение из второго :
@a.each_with_index do |a, index|
@b[index] # may be nil
end
Однако это означает, что @b
должен иметь []
оператор, который имеет место для любого массива, но может не иметь места для связанного списка, в зависимости от реализации.
Лучшим способом было бы объединить ваши коллекции ( @a
и @b
) вместе, чтобы вы могли выполнять итерации только для одной коллекции и получать оба значения.
Ответ №2:
Вы можете использовать Array#zip
:
@a.zip(@b).each do |a, b|
end