Ich habe ein Modell in meiner Rails App für ein Bulletin, und wenn es erstellt wird, werden viele der Werte in der Datenbank als serialisierte Hashes oder Arrays gespeichert, auf die später zugegriffen wird. Ich versuche, eine Bearbeitungsansicht für nur einen dieser Hashes zu erstellen, aber ich kann nicht herausfinden, wie ich darauf in meinem Formular zugreifen kann.Wie bearbeitet serialisierte Rails Hashes in einem Formular?
Der Hash sieht wie folgt aus, wenn sie gespeichert:
top_offices = { first_office: "Office Name", first_office_amount: 1234.50,
second_office: "Office Name", second_office_amount: 1234.50 }
Und so weiter ... gibt es fünf Büros.
So in der Konsole kann ich die Werte bearbeiten, indem Sie:
bulletin = Bulletin.last
bulletin.top_offices[:first_office] = "New Office"
bulletin.top_offices[:first_office_amount] = 1234.00
bulletin.save
ich kann nicht herausfinden, wie ein Formular zu machen, die ich richtig diese Werte zuweisen kann. Ich brauche nicht einmal das Formular, um die zuvor gespeicherten Werte zu füllen, weil ich sie jedes Mal komplett ändere, wenn ich das Formular verwende.
Okay. Ich denke, ich werde es mit der ersten Option herausfinden können. Ich bevorzuge wahrscheinlich den zweiten Ansatz, aber ich kann nicht herausfinden, wie es in meinem Kopf funktioniert. Wie verwende ich diese Methoden im Formular? Kann ich einfach ein 'form_tag' und ein paar 'text_field_tag's für': first_office' erstellen, sobald ich diese definiert habe, und an meine Update-Aktion senden? –
Die * _field-Ansichtshelfer suchen nach dem angegebenen Attributnamen für das angegebene Objekt form_for. Wenn Sie also 'form_for @bulletin do | f |' gemacht haben und dann 'f.text_field: first_office', dann ruft der' text_field'-Helfer etwas mit dem Namen 'first_office' auf dem Objekt auf.Es könnte ein Attribut oder eine Methode sein. Das ist der "magische" Teil;) – ZedTuX