rails simple_form – champ caché – crée?

Comment pouvez-vous avoir un champ caché avec une forme 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 encore !!!

 =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" 
 = f.input_field :title, as: :hidden, value: "some value" 

Est aussi une option. Notez toutefois qu’il ignore tout wrapper défini pour votre générateur de formulaires.

La manière correcte (si vous n’essayez pas de réinitialiser la valeur de l’entrée hidden_field) est:

 f.hidden_field :method, :value => value_of_the_hidden_field_as_it_comes_through_in_your_form 

:method est la méthode qui, lorsqu’elle est appelée sur l’object, entraîne 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, ma réponse est que vous ne voulez pas réinitialiser la valeur soumise par l’utilisateur.

J’espère que cela a du sens.