Установка ha sh переменных экземпляра в новую переменную для вызова .each_with_index в Ruby - PullRequest
0 голосов
/ 24 марта 2020

У меня есть три переменных экземпляра:

@book, @recent_books, @popular_books

@ books содержит 1 просматриваемую в настоящий момент запись, @recent_books содержит 10 записей, а @popular_books содержит 10 записей

Я хочу назначить переменная для них и положить их в ха sh вместе, так что в моем контроллере у меня есть:

@book_list = [@book, @recent_books, @popular_books]

Теперь, на мой взгляд, я хочу перебрать каждого из них и отобразить информацию для каждая:

@book_list.each_with_index do |(book_list), index|
book_list.title,
book_list.author,
index + 1,
etc

Проблема, с которой я столкнулся, заключается в том, что она повторяет только три записи вместо 21. Однако, если я проверю @book_list, я увижу все 21 запись, а @ book_list.count перечислит только три. Я понимаю, почему это происходит, но не понимаю, как это исправить, чтобы он повторял все 21 запись.

1 Ответ

0 голосов
/ 24 марта 2020

@book_list.flatten создаст плоский массив из 21 элемента. Кроме того, в отличие от each_with_index, with_index может принять начальный индекс, поэтому вам не нужно index + 1:

@book_list.flatten.each.with_index(1) do |book, index|
  ...
end
...