wake-up-neo.net

rails simple_form - verstecktes Feld - erstellen?

Wie können Sie ein verstecktes Feld mit einfacher Form haben?

Der folgende Code:

= simple_form_for @movie do |f|
  = f.hidden :title, "some value"
  = f.button :submit

führt zu diesem Fehler:

undefined method `hidden' for #SimpleForm::FormBuilder:0x000001042b7cd0
169
Oleander

versuche dies

= f.input :title, :as => :hidden, :input_html => { :value => "some value" }
301
fl00r

Kürzeste noch !!!

=f.hidden_field :title, :value => "some value"

Kürzer, trockener und vielleicht offensichtlicher.

Natürlich können wir mit Ruby 1.9 und dem neuen Hash-Format 3 Zeichen kürzer machen mit ...

=f.hidden_field :title, value: "some value"
275
Michael Durrant

Der richtige Weg (wenn Sie nicht versuchen, den Wert der hidden_field-Eingabe zurückzusetzen) ist:

f.hidden_field :method, :value => value_of_the_hidden_field_as_it_comes_through_in_your_form

Woher :method ist die Methode, die beim Aufrufen des Objekts den gewünschten Wert ergibt

Also folge dem obigen Beispiel:

= simple_form_for @movie do |f|
  = f.hidden :title, "some value"
  = f.button :submit

Der im Beispiel verwendete Code setzt den Wert (: title) von @movie zurück, der vom Formular übergeben wird. Wenn Sie auf den Wert (: title) eines Films zugreifen müssen, anstatt ihn zurückzusetzen, gehen Sie folgendermaßen vor:

= simple_form_for @movie do |f|
  = f.hidden :title, :value => params[:movie][:title]
  = f.button :submit

Wieder verwende nur meine Antwort, wenn du den vom Benutzer übermittelten Wert nicht zurücksetzen möchtest.

Ich hoffe das macht Sinn.

5
Uzzar
= f.input_field :title, as: :hidden, value: "some value"

Ist auch eine Option. Beachten Sie jedoch, dass alle für Ihren Form Builder definierten Wrapper übersprungen werden.

5
Fuad Saud