Frage

Ich habe ein benutzermodell, die enthält ein Feld namens, sagen wir, text1.Der Nutzer/die neue form, die ich haben will, 4 einzelne Textfelder für diese text1.In meinem Modell werde ich die Werte aus diesen Feldern und verketten Sie zusammen, als durch Kommas getrennte Werte, und speichern Sie Sie in der DB.Um Ihnen ein Verständnis, das ist, was ich will.

<input type="text" name="user[text1][]" />
<input type="text" name="user[text1][]" />
<input type="text" name="user[text1][]" />
<input type="text" name="user[text1][]" />

Wie bekomme ich diese mit form_for-Helfer-Methode?Für jetzt, bitte Mach dir keine sorgen über die accessor-Methode in das Modell, dass alles erledigt ist.Dank einer Tonne.

War es hilfreich?

Lösung

Fügen Sie einige virtuelle Attribute zu Ihren User Modell

class User < ActiveRecord::Base
  attr_accessor :text1_part1  
  attr_accessor :text1_part2  
  attr_accessor :text1_part3  
  attr_accessor :text1_part4

  def before_validation
      self.text1 = "#{self.text1_part1}#{self.text1_part2}#{self.text1_part3}#{self.text1_part4}"
  end
  # make sure you fill the correct values for
  # the text parts for an existing record.
  # This can be done by implementing `after_find` or overriding
  # `text1=`.
end  

In Ihrem code anzeigen die Verwendung der neuen Attribute anstelle von text1

<% form_for(:user) do |f| %>
   #some code
   <%= f.text_field :text1_part1>
   <%= f.text_field :text1_part2>
   <%= f.text_field :text1_part3>
   <%= f.text_field :text1_part4>
   #some code
   <%= f.submit "Save">
<% end %>

Andere Tipps

Die Vorherige Antwort gibt eine Lösung, ich bin nur eine hintergrund, warum das, was Sie fordern das funktioniert nicht so ist, wie Sie vielleicht hoffen.

Sie können wirklich erstellen eines Formulars mit multiple-input-Felder mit dem gleichen Namen, und die Daten werden veröffentlicht.Allerdings, wenn Schienen erhält die post automatisch parametrisiert die post-Daten und/oder url-Parameter zu.Im wesentlichen teilt sich auf die & und ordnet die Schlüssel/Wert-Paare, die params-hash.Das Ergebnis ist, params[:user][:text1] (aus dem Beispiel) wird der Wert der letzten Instanz des Benutzers[text1] es begegnet, da ist es einfach Wert Zuordnung zu einem vorhandenen Schlüssel.Möchten Sie vielleicht zu Graben, in ActiveRecord multiparameter-Zuordnungen um eine Idee zu bekommen, wie die datetime-Attribute zu erhalten, da Sie ähnlich sind, um Ihre use-case.

Ich arbeite an etwas ähnliches, und es klingt vielleicht nach der Serialisierung ist, was Sie suchen.Leider habe ich nicht meine Probleme gelöst noch nicht, also kann ich nicht bieten etwas mehr Beton.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top