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
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!
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.
Haben Sie ein Beispiel dafür, was ich schreiben würde, um die Attribute Hash in diesem Beispiel zu verarbeiten? – pappy
Ich gebe Ihnen die Prämie, wenn Sie ein Beispiel mit geschachtelten Form Felder hinzufügen. – max