2010-12-27 10 views
5

Jestem nowy w Ruby i Ruby on Rails. Próbuję znaleźć sposób na użycie id w polu wejściowym utworzonym przez pomocnik hidden_field, ponieważ muszę dodać trochę javascript, który używa jquery, aby uzyskać pole wejściowe według id.Ruby Rails: pobierz identyfikator pola wprowadzania formularza

Mam dwa modele> Osoba i adres. Osoba has_one Adres i adres ma właściwość zip_code.

używam następujący kod, aby wygenerować formularz z ukrytymi polami:

<%= form.fields_for :address do |form| %> 

    <%= form.hidden_field :zip_code %> 

<% end %> 

to generuje następujące html:

<input class="text" id="person_address_attributes_zip_code" name="person[address_attributes][zip_code]" type="hidden" /> 

Czy istnieje metoda lub pomocnik, który daje mi identyfikator używane na polu danej nieruchomości? Na przykład, muszę wiedzieć, że dla: zip_code wygenerowany identyfikator to "person_address_attributes_zip_code".

Wielkie dzięki z góry. Bruno

Odpowiedz

1

Najprostszym sposobem byłoby wymusić id być cokolwiek chcesz, na przykład:

<%= form.hidden_field :zip_code, :id => 'zip_code' %> 

Pole nazwa jest używana w parametrach żądania, więc nie ma znaczenia, co pole id jest ustawione na.

Metody określania identyfikatora w Rails 3 znajdują się w pliku actionpack/lib/action_view/helpers/form_helper.rb, głównie w module InstanceTag. Większość z nich to odmiany głównej nazwy modelu, które zostały odkażone w celu usunięcia znaków specjalnych, a następnie podkreślenia, po których następuje wyczyszczenie nazwy pola, ale modele zagnieżdżone i atrybuty dodatkowo zwiększają złożoność.

+0

Dzięki, zgadzam się, że jest to znacznie łatwiejsze, niż sugerujesz. – Bruno

+3

Czy istnieje metoda pomocnika, która może być faktycznie użyta do uzyskania wygenerowanych identyfikatorów? zamiast konieczności ustawiania indywidualnych identyfikatorów? – freethinker

5

Kreator formularzy ma dostęp do nazwy obiektu, której można użyć do uzyskania wygenerowanego identyfikatora, biorąc pod uwagę, że znasz nazwę pola. Przetestowałem to w Rails 3:

<%= form.fields_for :addresses do |form|%> 
    <%= "#{form.object_name}[zip_code]".gsub(/(\])?\[/, "_").chop %> 
    <%= form.text_field :zip_code %> 
<% end %> 
Powiązane problemy