Kapibara: Jak wypełnić pole wejściowe za pomocą jego identyfikatora

88

Mam to:

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

Jak wypełnić to pole za pomocą jego identyfikatora?

Nerian
źródło

Odpowiedzi:

126

fill_in akceptuje id jako pierwszy parametr:

fill_in 'course_group_courses_attributes_2_name', :with => 'some text'
raidfive
źródło
9
Tak myślałem, ale to nie działa. Wydaje się, że to go nie wypełnia. Nie daje żadnych błędów o nie znalezieniu go. Po prostu go nie wypełnia.
Nerian,
Może możesz dołączyć dany kod kapibary i inny powiązany kod.
raidfive
Odkryłem, że problem jest w Mongoid. Zwolnij błędy kandydatów.
Nerian,
@Nerian ah! cieszę się, że to wymyśliłeś
raidfive
czy mamy rozwiązanie?
Zakos
32

Możesz to również zrobić za pomocą:

find('Id or class here').set('some text')
user2322409
źródło
7

fill_inakceptuje id bez symbolu #, który początkowo wydawał mi się mylący. Należy również pamiętać, że jeśli pole wejściowe jest modalne, może być konieczne poczekanie na przejście lub pojawienie się, zanim będzie można wypełnić pole.

Strangegroove
źródło
4

Jeśli używasz simple_form gem, musisz zauważyć, że automatycznie identyfikuje elementy formularza, dlatego ręczne identyfikowanie elementów jest daremne!

Jest; jednak konwencja nazewnictwa, którą simple_form stosuje się do elementów formularza id.

object_attribute

Jeśli więc podajesz informacje dla, powiedzmy, obiektu kontaktu w następujący sposób:

= simple_form_for @contact do |f|
  = f.input :first_name
  = f.input :last_name

simple_form automatycznie wygeneruje identyfikatory odpowiednio dla każdego elementu formularza, tak jak:

id="contact_first_name"
id="contact_last_name"

Teraz możesz po prostu skorzystać z tej konwencji nazewnictwa, aby spełnić wszystkie Twoje potrzeby fill_in. Mam nadzieję że to pomoże.

moeabdol
źródło