Comment pouvez-vous avoir un champ caché avec un formulaire simple?
Le code suivant:
= simple_form_for @movie do |f|
= f.hidden :title, "some value"
= f.button :submit
entraîne cette erreur:
undefined method `hidden' for #SimpleForm::FormBuilder:0x000001042b7cd0
essaye ça
= f.input :title, :as => :hidden, :input_html => { :value => "some value" }
Le plus court pourtant !!!
=f.hidden_field :title, :value => "some value"
Plus court, plus sec et peut-être plus évident.
Bien sûr, avec Ruby 1.9 et le nouveau format de hachage, nous pouvons raccourcir de 3 caractères avec ...
=f.hidden_field :title, value: "some value"
La manière correcte (si vous n'essayez pas de réinitialiser la valeur de l'entrée hidden_field) est la suivante:
f.hidden_field :method, :value => value_of_the_hidden_field_as_it_comes_through_in_your_form
Où :method
est la méthode qui, lorsqu'elle est appelée sur l'objet, donne la valeur souhaitée
Donc, en suivant l'exemple ci-dessus:
= simple_form_for @movie do |f|
= f.hidden :title, "some value"
= f.button :submit
Le code utilisé dans l'exemple réinitialisera la valeur (: title) de @movie transmise par le formulaire. Si vous avez besoin d'accéder à la valeur (: title) d'un film, au lieu de le réinitialiser, procédez comme suit:
= simple_form_for @movie do |f|
= f.hidden :title, :value => params[:movie][:title]
= f.button :submit
Encore une fois utilise seulement ma réponse si vous ne voulez pas réinitialiser la valeur soumise par l'utilisateur.
J'espère que cela a du sens.
= f.input_field :title, as: :hidden, value: "some value"
Est aussi une option. Notez cependant qu'il ignore tout wrapper défini pour votre générateur de formulaire.