Wielokrotne wykorzystanie tego samego formularza na stronie

Witam,
Mam następującą sytuację - chciałbym wykorzystać wiele razy ten sam formularz. Chodzi o to że mam kategorie dokumentów i pod każdą kategorią jest formularz do dodania dokumentu do danej kategorii. Więc jest to ten sam formularz ze zmienionym tylko urlem do którego się on submituje.

Problem polega na tym, że id pól się na siebie nakładają. I pytanie: jest jakaś opcja w form_builderze, która dodawała by jakiś prefix/suffix do id wszystkich pól? Albo jakiś inny sposób w jaki to się normalnie obchodzi?

??? eee no jak dla mnie wystarczy, że wyrzucisz formularz do partiala, a tylko pierwsza linikę będziesz zmieniał coś takiego

= form_form ... render ....
i tyle, nie bardzo wiem w czym problem?

Rozumiem że wiele formularzy jest renderowanych na tej samej stronie, a id kontrolek wygenerowanych się powtarzają, co nie jest dobre ani poprawne.

Możesz to załatwić przypisując ręcznie ID każdej z kontrolek w formularzu:

  = form_for @document do |f|
    = f.text_field :name, :id => "document_#{@document.id}_name"
    ...

Ale jeśli znajdziesz bardziej eleganckie rozwiązanie to podziel się z nami tutaj, chętnie się dowiem.

Edit: * zasugerowałem się gotarem w kodzie powyżej, mam nadzieję że składnia HAMLa Cię nie zbije z tropu.

[quote=hubertlepicki]Rozumiem że wiele formularzy jest renderowanych na tej samej stronie, a id kontrolek wygenerowanych się powtarzają, co nie jest dobre ani poprawne.

Możesz to załatwić przypisując ręcznie ID każdej z kontrolek w formularzu:

  = form_for @document do |f|
    = f.text_field :name, :id => "document_#{@document.id}_name"
    ...

Ale jeśli znajdziesz bardziej eleganckie rozwiązanie to podziel się z nami tutaj, chętnie się dowiem.

Edit: * zasugerowałem się gotarem w kodzie powyżej, mam nadzieję że składnia HAMLa Cię nie zbije z tropu.[/quote]
Na to rozwiązanie już wpadłem, ale jest trochę uciążliwe (trzeba też pozmieniać labele etc.). Myślałem, że może jest jakaś nieudokumentowana opcja albo znany hack z którego się korzysta.

Jeżeli uda mi się coś znaleźć to dam znać. Dzięki za odpowiedzi.

W sumie pytanie po co ci te ID, bo można zawsze po załadowaniu przelecieć to js i nadać im ID w jakiejś pętli. Tylko wtedy nie będą znane, jeśli chcesz z nich gdzieś korzystać

się nie walidują ;). Poza tym można się łatwo wkopać w jakieś nie przewidziane sytuacje, kiedy zechcesz podpiąć jakiś JavaScript pod tak zreplikowane formularze.

Yessir.

Panie, cuda się dzieją :wink:

podbijam to pytanie, bo jeżeli do jakiś operacji js, to można załatwić to inaczej. Robisz partiala gdzie inputy nie mają id (samo name), a dobierasz się do nich przeszukując konkretną formę.
coś w stylu:

$('#id_form > input[name$="model[field]"]')

P.S. pisane z głowy, nie sprawdzałem ale powinno działać. Wszystko zależy od tego po co Ci te idki…

dokładnie

Na przykład po to, żeby podpiąć pod nie labels. Skupmy się na rozwiązaniach semantycznych a nie na odpierdol się :wink:

Powiem ci, że strzeliłeś w dziesiątke. Na początku byłem skłonny zmienić ręcznie id pól (w sensie dać id => “blabla-#{n}”). Ale po krótkim zastanowieniu, że muszę z labelami się gimnastykować uznałem, że tego już za wiele i warto zapytać na forum ;).

Aha, jeszcze zapomniałem dodać że to Rails 2.3. Może w 3 coś się zmieniło, jeszcze się nie zagłębiłem.