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
versuche dies
= f.input :title, :as => :hidden, :input_html => { :value => "some value" }
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"
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.
= 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.