2012-09-03 4 views
16

Tworzę własny widok niestandardowy, który sprawia, że ​​proces tworzenia skojarzonych modeli jest mniej bolesny dla moich użytkowników. Chcę wyświetlić wszystkie powiązane z modelem elementy w linii z elementami sterującymi, aby je edytować. Jest to dość łatwe do samodzielnego użycia w podstawowych polach, ale wolę używać częściowej dla skojarzeń modelu liniowego, ale nie mogę znaleźć żadnej dokumentacji, która by to zrobiła.Użyj formularzy rails_admin w niestandardowych widokach?

Odpowiedz

0

Jest tam fajny klejnot, który robi to, co chcesz. Nazywa się Nested Form Fields. Pozwala na edycję rekordów (wraz z ich has_many asocjacji) na jednej stronie. Fajną rzeczą jest to, że nawet używa jQuery do dynamicznego dodawania/usuwania pól formularza bez przeładowywania strony. Kupowanie klejnotów docs w celu prawidłowego użycia. Mam nadzieję, że pomaga!

+0

Dam ci nagrodę, jeśli dodasz przykład używając zagnieżdżonych pól formularzy. – max

1

Można użyć Nested Form

Rozważmy klasę użytkownika, która zwraca tablicę instancji projekt z metodą czytnika projekty i odpowiada na projects_attributes = metoda Scenariusz:

class User 
    def projects 
    [@project1, @project2] 
    end 

    def projects_attributes=(attributes) 
    # Process the attributes hash 
    end 
end 

nocie że projects_attributes = pisarz metoda jest w istocie wymagana dla fields_for do poprawnej identyfikacji: projekty jako kolekcja i poprawne indeksy do ustawienia w postaci znaczników.

Kiedy projektów jest już stowarzyszenie na użytkownika można użyć accepts_nested_attributes_for zdefiniować metodę pisarz dla Ciebie:

class User < ActiveRecord::Base 
    has_many :projects 
    accepts_nested_attributes_for :projects 
end 

Model ten może być teraz używany z zagnieżdżonego fields_for. Blok podane do zagnieżdżonego fields_for rozmowy będzie powtarzany dla każdego wystąpienia w kolekcji:

<%= nested_form_for @user do |user_form| %> 
    ... 
    <%= user_form.fields_for :projects do |project_fields| %> 
    <% if project_fields.object.active? %> 
     Name: <%= project_fields.text_field :name %> 
    <% end %> 
    <% end %> 
    ... 
<% end %> 

Tu idzie Reference szczegóły.

+0

Czy masz przykład tego, co napisałbym, aby przetworzyć mieszanie atrybutów w tym przykładzie? – pappy