Я пытаюсь напечатать отформатированные даты, используя элементы массива в хэш-карта (records_array["START_TIME_SEC"]
)Печать даты из нескольких элементов в массиве с помощью Time.strptime
Первый элемент массива: records_hash["START_TIME_SEC"][0]
который равен : 1405583947
Печать жёстко прописанные время работает просто отлично: Time.strptime('1405583947', '%s')
напечатает: 2014-07-17 7:59:07 +0000 (Это верно)
Далее, установив жёстко прописанные время переменной как струна прекрасно работает:
stime = '1405583947'
Time.strptime(stime, '%s')
напечатает: 2014-07-17 7:59:07 +0000 (опять же, правильно!)
Если я вытащить один раз из массива и попытаться использовать его в Time.strptime это работает просто отлично:
stime2 = records_array["START_TIME_SEC"][0].to_s
Time.strptime(stime2, '%s')
напечатает: 2014-07-17 7:59:07 +0000 (правильно еще раз)
Однако при попытке перебрать массив и распечатать нужные для всех элементов Я получаю сообщение об ошибке:
<% ([email protected]_array.count).each do|i| %>
<tr class="post">
<td>
<% stime = @records_hash["START_TIME_SEC"][i].to_s %>
<%= Time.strptime(stime, '%s') %>
</td>
</tr>
<% end %>
Ошибка: неправильный формат strptime - `% s'
для начинающих у вас есть ошибка в вашем итераторе. вам нужно '(0 .. (array.count - 1))', но рубиновый способ сделать это - @records_hash ["START_TIME_SEC"]. each {| x | ...} ' – xlembouras
Также вы ссылаетесь на' @ records_array' и '@ records_hash' - эти оба объекта или это опечатка, потому что ваш другой код показывает' @records_array ["START_TIME_SEC"] '. – engineersmnky
Array.count - 1 решил проблему. Вау, мне так глупо за то, что ты так долго застрял. Спасибо огромное! – 12nm