Афаик, вы можете проверить две вещи:
- что динамическое добавление вложенных элементов работает
- создание элементов, их заполнение и хранение в базе данных
Итак, предположим, что соответствующая часть вашего представления выглядит так (пример по умолчанию):
#tasks
= f.semantic_fields_for :tasks do |task|
= render 'task_fields', :f => task
.links
= link_to_add_association 'add task', f, :tasks
и ваш вложенный элемент выглядит
.nested-fields
= f.input :description
= f.input :done, :as => :boolean
= link_to_remove_association "remove task", f
Так что обычно вы даете ему класс, я обычно просто проверяю количество элементов на странице.
Поэтому, если один элемент уже существует, создавая новый элемент, счет должен быть равен двум. Это вы можете проверить с помощью
find("#tasks .nested-fields").count.should == 2
Заполняя вновь добавленный вложенный элемент, вы можете использовать селектор :last-child
css
find("#tasks .nested-fields:last-child input#description").set("something")
То, как формируются имена и идентификаторы, близко к внутренностям рельсов, поэтому я стараюсь держаться подальше от них.
person
nathanvda
schedule
21.04.2014
<input class="string required form-control" id="foo_foo_attributes_1398082250289_name" name="foo[foo_attributes_attributes][1398082250289][name]" type="text">
при обновлении, они устанавливаются в свой индекс в объекте ActiveRecord, но было неясно, как найти элемент, который был добавлен на лету. - person DazBaldwin   schedule 21.04.2014