Не знаю, помогает ли это, но у меня была похожая проблема. Причина, по которой я хотел перебрать блок «it», заключалась в том, что сообщения об ошибках rspec содержали название вещи, над которой я перебирал.
В моем случае это был набор идентификаторов, которые могут содержать или не содержать тег div в зависимости от состояния различных объектов на странице.
Так я и сделал:
%w{preliminary_project_proposal final_project_proposal progress_report preliminary_abstract final_abstract preliminary_presentation final_presentation}.each do |id|
it "should not show a late message for #{id}" do
within "##{id}" do
page.should_not have_css('.late_assignment')
end
end
end
Это сработало нормально. Как вы указали, я не мог перенести присвоение массива в переменную или метод, что означало, что он появился в нескольких местах, что было не очень красиво.