Первый:
При рендеринге коллекции каждый элемент коллекции передается частичному в качестве локальной переменной с тем же именем, что и сам частичный. Это означает, что для этого звонка:
<%= render 'question_buttons', collection: @accepted %>
частичный question_buttons
будет вызываться для каждого элемента массива @accepted
; этот элемент будет доступен внутри частичного как question_buttons
.
Если вы хотите использовать другое имя для элемента, например question
, вам нужно назвать его как:
<%= render 'question_buttons', collection: @accepted, as: :question %>
Другой вариант - просто переименовать частичное в question
:
<%= render 'question', collection: @accepted %>
Второе:
В вашем коде фрагмент рендеринга вызывается на каждой итерации цикла над @accepted
элементами. Например, если @accepted
имеет 8 элементов, частичное будет отображаться 8 раз для каждого из этих элементов, то есть 8 * 8 = 64 раза. Я подозреваю, что это не то, чего вы хотите достичь. Ваш код выглядит так, как будто question_buttons
, часть должна отображаться для каждого элемента @accepted
только один раз. В этом случае использование collection
param здесь не имеет смысла. Просто передайте локальную переменную question
в частичное:
<%= render 'question_buttons', question: question %>