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?

Odpowiedzi:


126

fill_in akceptuje id jako pierwszy parametr:

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

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

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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.