Schienen verschachtelte Attribute-array
Ich habe Probleme beim erstellen mehrere model-Objekte mithilfe von geschachtelten Parametern. Die form .erb ich:
<%= f.fields_for :comments do |c| %>
<%= c.text_field :text %>
<% end %>
ist das generieren von input-Felder, die wie folgt Aussehen:
<input type="text" name="ad[comments_attributes][0][text]" />
<input type="text" name="ad[comments_attributes][1][text]" />
<input type="text" name="ad[comments_attributes][2][text]" />
wenn das, was ich wirklich wollen, ist für Sie wie folgt Aussehen:
<input type="text" name="ad[comments_attributes][][text]" />
<input type="text" name="ad[comments_attributes][][text]" />
<input type="text" name="ad[comments_attributes][][text]" />
Verwendung von Formular-Helfer, wie kann ich das Formular erstellen Sie ein array von hashes, wie ich im zweiten Beispiel, statt ein hash von hashes wie in der ersten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie text_field_tag für diese Besondere Art der Anforderung.
Diese FormTagHelper bietet eine Reihe von Methoden für das erstellen von Formular-tags, die sich nicht auf eine Active Record-Objekt zugewiesen, zu der Vorlage wie FormHelper tut. Stattdessen geben Sie die Namen und Werte manuell ein.
Wenn Sie Ihnen alle den gleichen Namen und fügen Sie [], um am Ende wie folgt:
Können Sie den Zugriff auf diese von dem controller:
Den oben field_tag html-Ausgabe wie folgt Aussehen:
Wenn Sie Werte eingeben, die zwischen den eckigen Klammern, Schienen ihn als hash:
wäre, interpretiert der controller als ein hash mit den Tasten "1", "2" und "3".
Ich hoffe, ich verstehe richtig, was man benötigt.
Dank
f.fields_for(:comments, :prefix => 'comments_attributes[]') do |ff|