Капибара: Как мне заполнить поле ввода по его 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')
user2322409
источник
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. Надеюсь это поможет.

Moeabdol
источник