2012-09-03 7 views
16

Ich mache meine eigene benutzerdefinierte Ansicht, dass ich den Prozess der Erstellung assoziierter Modelle für meine Benutzer weniger schmerzhaft machen muss. Ich möchte alle mit dem Modell verbundenen Teile in einer Linie anzeigen und mit Steuerelementen bearbeiten. Dies ist ziemlich einfach, um für die grundlegenden Felder zu rollen, aber ich würde lieber eine form_filtering_select teilweise für die Inline-Modell-Verknüpfungen verwenden, aber ich kann keine Dokumentation finden, dies zu tun.Verwenden Sie rails_admin Formulare in benutzerdefinierten Ansichten?

Antwort

0

Es ist ein cooler Edelstein da draußen, der ziemlich genau das tut, was Sie wollen. Es heißt Nested Form Fields. Sie können Datensätze (zusammen mit ihren has_many-Zuordnungen) auf einer einzigen Seite bearbeiten. Das Tolle daran ist, dass sogar jQuery zum dynamischen Hinzufügen/Entfernen von Formularfeldern verwendet wird, ohne dass die Seite neu geladen werden muss. Überprüfen Sie die Edelsteine ​​docs für die ordnungsgemäße Verwendung. Ich hoffe, das hilft!

+0

Ich gebe Ihnen die Prämie, wenn Sie ein Beispiel mit geschachtelten Form Felder hinzufügen. – max

1

können Sie verwenden Nested Form

eine User-Klasse betrachten, die eine Reihe von Projektinstanzen aus dem Projekte Leser Methode gibt und reagiert auf die projects_attributes = Schriftsteller Methode:

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

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

Beachten Sie, dass die projects_attributes = Schreiber Methode ist in der Tat erforderlich für fields_for, um korrekt zu identifizieren: Projekte als eine Sammlung und die richtigen Indizes in der Form Markup gesetzt werden.

Bei Projekten ist bereits ein Verein auf Benutzer Sie die Schreiber-Methode verwenden, können Sie accepts_nested_attributes_for zu definieren:

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

Dieses Modell kann jetzt mit einer verschachtelten fields_for verwendet werden. Der Block mit dem verschachtelten fields_for Anruf gegeben wird für jede Instanz in der Sammlung wiederholt werden:

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

geht hier die Reference für weitere Einzelheiten.

+0

Haben Sie ein Beispiel dafür, was ich schreiben würde, um die Attribute Hash in diesem Beispiel zu verarbeiten? – pappy