Mehrere Formulare für dasselbe Modell auf einer einzelnen Seite

7

Auf der ersten Seite meiner Songtextseite für Rap-Texte gibt es einen Ort, an dem Nutzer versuchen können, eine herausfordernde Zeile zu erklären:

alt text http://dl.dropbox.com/u/2792776/screenshots /2010-02-06_1620.png

Hier ist der Teil, den ich benutze, um dies zu erzeugen:

%Vor%

Es ist jedoch problematisch, mehrere davon auf einer einzelnen Seite zu platzieren, da Rails jedem Formular automatisch eine ID von new_feedback und jedem Feld eine ID wie feedback_body (führt zu Namenskollisionen) gibt

Offensichtlich könnte ich dem Formular und all seinen Feldern etwas wie :id => '' hinzufügen, aber das scheint sich ein wenig zu wiederholen. Was ist der beste Weg, dies zu tun?

    
Tom Lehman 06.02.2010, 21:39
quelle

5 Antworten

7

Wenn Sie Ihre Eingabenamen oder Ihre Modellstruktur nicht ändern möchten, können Sie die Option id verwenden, um Ihre Formular-ID eindeutig zu machen und die namespace -Option, um Ihre Eingabe-IDs eindeutig zu machen:

%Vor%

Auf diese Weise ist unsere Formular-ID einzigartig, d. h. annotation_2_feedback , und dies fügt auch ein Präfix hinzu, z. annotation_2_ , für jede Eingabe, die durch f erstellt wurde.

    
Daniel Rikowski 09.07.2014 12:25
quelle
6

Haben Sie geschachtelte_Attribute für Schienenmodelle in Erwägung gezogen? Anstatt mehrere new -Feedback-Formulare zu verwenden, in denen jedes an eine Annotation gebunden ist, könnten Sie mehrere edit Annotationsformulare haben, wobei jede Annotation Felder für ein neues Feedback enthält. Die IDs der generierten Formulare würden die Annotations-ID enthalten, beispielsweise edit_annotation_16 .

Das Anmerkungsmodell würde eine Beziehung zu seinen Rückmeldungen haben und auch verschachtelte Attribute für sie akzeptieren.

%Vor%

Sie können dann beliebig viele Formulare hinzufügen, eines für jede Annotation. Zum Beispiel habe ich Folgendes versucht:

%Vor%

Und der schnelle und schmutzige Controller für die obige Bearbeitungsansicht:

%Vor%     
Anurag 07.02.2010 08:23
quelle
3

Ich hatte das gleiche Problem auf einer Website, an der ich gerade arbeite, und bin mit der Lösung gegangen, die Sie am Ende erwähnt haben. Es wiederholt sich nicht, wenn Sie die ID programmgesteuert generieren und das gesamte Formular in eine partielle Form bringen. Zum Beispiel habe ich auf meiner Seite mehrere "Einträge" pro Seite, von denen jede zwei Abstimmungsformen hat, eins zum Wählen und eins zum Abstimmen. Die Datensatz-ID für jeden Eintrag wird an die DOM-ID seiner Abstimmungsformulare angehängt, um sie so eindeutig zu machen (zeigt nur die Schaltfläche zum Abstimmen nach oben, die Abstimmungsschaltfläche ist ähnlich):

%Vor%     
Jimmy Cuadra 06.02.2010 22:05
quelle
2

Ich hatte auch das gleiche Problem, wollte aber eine erweiterbare Lösung, als die ID zu jedem Feld hinzuzufügen. Da wir bereits das form_for ... | f | Notation ist der Trick, den Namen des Modells zu ändern, und Sie erhalten ein neues HTML-ID-Präfix.

Verwenden Sie eine Variante dieser Methode: Ссылка (Ich habe das & amp; block Zeug entfernt)

Ich erstelle ein neues Modell, das eine exakte Kopie des Modells ist, für das ich ein zweites Formular auf derselben Seite haben möchte. Verwenden Sie dann dieses neue Modell, um das neue Formular zu rendern.

Wenn das erste Formular

verwendet %Vor%

dann

%Vor%

Ihr ID-Präfix ist 'address_new_' anstelle von 'address_' für die zweite Form desselben Modells. Wenn Sie die Formularparameter lesen, können Sie ein Adressmodell erstellen, in das die Werte eingefügt werden.

    
Shawn Regan 18.09.2012 17:58
quelle
1

Für diejenigen, die hier stolpern und nach der Lösung für die Rails 3.2 App suchen, sehen Sie sich stattdessen diese Frage an:

Schienen: form_for mehrfach verwenden (DOM IDs)

    
Damir Zekić 04.10.2012 15:38
quelle

Tags und Links