web-dev-qa-db-fra.com

rails simple_form - champ caché - créer?

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
169
Oleander

essaye ça

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

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"
275
Michael Durrant

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

: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.

5
Uzzar
= 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.

5
Fuad Saud