2017-01-05 11 views
2

Пытается перебирать строки таблицы, пропуская первую строку. Использование рубин, огурец и жемчуг Page-объекта.Ruby each.with_index (1) возвращает ошибку: no block given (yield)

PAGE_CLASS

table(:table_data, id: 'list') 

ШАГ ОПРЕДЕЛЕНИЕ

@current_page.table_data_element.each.with_index(1) do |row| 
    puts row.value 
end 

получает сообщение об ошибке: LocalJumpError: no block given (yield)

ответ

1

Этот код работает для меня.

@current_page.table_data_element.each do |row| 
     if row.text == '' 
     next 
     else 
     row.link_element(text: 'Edit').visible? 
     end 
    end 
1

Попробуйте

array.drop(1).each do |row| 
    ... 
end 

Как это работает?

  • drop скачет n элементы, это не изменяет исходный массив
  • each перебирает на все остальные элементы
+0

Метод 'Array' не существует для элемента страницы страницы' Table'. Поэтому я не могу назвать это. – codesman

1

Чистый способ сделать это без изменения массива будет:

array[1..-1].each { |row| } 

массив [1 ..- 1] указывает диапазон индексов внутри массива, начиная с индекса 1 (sin ce 0 будет индексом первого элемента в массиве) и переходит к последнему индексу (-1).

Edit: OP обновил, что возвращаемая информация не является массивом, следующий синтаксис должен работать как вопрос намерен:

@current_page.table_data_element.each.with_index(1) do |row, index| 
    puts row.value 
end 
+1

'drop' не изменяет исходный массив – akuhn

+0

@akuhn Я не читал ваш ответ, когда я разместил его, я не утверждал, что ваш ответ изменил массив, просто заявил, что это решение не изменило массив. Извините за любую путаницу. Оба ответа работают, и ваш читается очень хорошо, я его поддержал! Приветствия. – OneNeptune

+1

Прохладный. Вы подняли хороший момент, хотя, я должен был быть явным о изменчивости, после того, как есть 'shift', который мутирует приемник. – akuhn

 Смежные вопросы

  • Нет связанных вопросов^_^