Капибара: Как заполнить поле ввода по его идентификатору


У меня есть это:

<input class="string optional" 
    id="course_group_courses_attributes_2_name" 
    name="course_group[courses_attributes][2][name]" 
    placeholder="Lengua" 
    size="15" 
    type="text" />
</div> 

Как я могу заполнить это поле по его ID?

4 81

4 ответа:

fill_in принимает ID в качестве первого параметра:

fill_in 'course_group_courses_attributes_2_name', :with => 'some text'

вы также можете сделать это с:

find('Id or class here').set('some text')

fill_in принимает идентификатор без символа#, который я сначала нашел запутанным. Также обратите внимание, что если ваше поле ввода находится в модальном режиме, вам может потребоваться дождаться перехода или исчезнуть, прежде чем поле может быть заполнено.

Если вы используете simple_form gem тогда вы должны отметить, что он автоматически идентифицирует ваши элементы формы, поэтому вручную идентифицировать элементы самостоятельно бесполезно!

существует; однако, соглашение об именовании, которое simple_form следует за элементами формы id.

object_attribute

поэтому, если вы заполняете информацию для, скажем, контактного объекта следующим образом:

= simple_form_for @contact do |f|
  = f.input :first_name
  = f.input :last_name
simple_form будет автоматически генерировать идентификаторы для каждого элемента формы, соответственно, как Итак:
id="contact_first_name"
id="contact_last_name"

Теперь вы можете просто использовать это соглашение об именах для выполнения всех ваших потребностей fill_in. Надеюсь, это поможет.