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


88

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

<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?

Ответы:


126

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

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

9
Я так и думал, но это не работает. Вроде не наполняет. Он не дает никаких ошибок о том, что не нашел. Это просто не наполняет его.
Нериан

Возможно, вы можете включить рассматриваемый код капибары и любой другой связанный код.
raidfive

Я обнаружил, что проблема в Mongoid. Отпустите ошибки кандидатов.
Nerian

@ Нериан ах! Рад, что ты это понял
raidfive

у нас есть решение?
Закос

32

Вы также можете сделать это с помощью:

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

7

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


4

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

Там есть; однако соглашение об именах, которому следует simple_form для идентификации элементов формы.

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. Надеюсь это поможет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.