2016-10-03 1 views
0

Ich habe eine serialisierte FeldWie mit serialisierten Feld in Schienen Form in meinem Modell

class Screen < ActiveRecord::Base 
    serialize :options 
end 

Der Benutzer umgehen sollte für jeden Datensatz hinzufügen/bearbeiten n Anzahl der Optionen kann. Ich sah diese SO question und versuchte

<%= f.fields_for :options do |o| %> 
    <%= o.label :axis_y %> 
    <%= o.text_field :axis_y %> 
    <%= o.label :axis_x %> 
    <%= o.text_field :axis_x %> 
<% end %> 

aber mein Problem ist, ich weiß nicht, was sind die Felder Benutzer hinzufügen möchten, und Anwender variable Anzahl von Attributen für options angeben können. Was ist der beste/richtige Weg dies zu tun? Jede Hilfe wird sehr geschätzt. Danke

Antwort

0

Ich habe noch nie serialize gesehen, also habe ich nachgeschaut. Here's ein Tutorial; offenbar müssen Sie auch den Typ des serialisierten Objekts angeben:

serialize :options, Hash 

die Hash-attrributes Um die weiße Liste, Sie ein paar Optionen.

Sie könnten einen benutzerdefinierten Validator (siehe here Anweisungen) erstellen

Sie können auch die options= Methode überschreiben:

def options=(val) 
    whitelisted_keys = ["some", "keys"] 
    if val.is_a?(Hash) && val.keys.all? { |key| whitelisted_keys.include? key } 
    super 
    else 
    errors.add(:options, "is invalid") 
    self 
    end 
end 

Vielleicht haben Sie auch benötigen screen_params Methode zu konfigurieren, so dass, wenn die Dinge aren‘ t arbeiten zeigen diesen Code in Ihrer Frage.

+0

Tanks für Sie helfen. Das eigentliche Problem ist hier, wie man dieses Feld im Formular verwendet. Ich kann meine Benutzer nicht bitten, einen Hash –

+0

zu füllen, der javascript definitiv benötigt, um dynamische Formen zu tun –

Verwandte Themen