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
ruby-on-rails
ruby-on-rails-3
form-for
hidden-field
simple-form
Linus Oleander
la source
la source
= f.input :title, :as => :hidden, :input_html => { :value => "some value" }
simple_form
manière de faire des entrées cachées, cependant, si seulement une entrée cachée est nécessaire, alors utilisez simplement lehidden_field
générateur de formulaire de Rails car Simple Form hérite de toutes les méthodes du générateur de formulaire.Le plus court encore !!!
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 3 caractères avec ...
la source
Est également une option. Notez, cependant, qu'il ignore tout wrapper défini pour votre générateur de formulaire.
la source
La manière correcte (si vous n'essayez pas de réinitialiser la valeur de l'entrée hidden_field) est:
Où
:method
est la méthode qui, lorsqu'elle est appelée sur l'objet, donne la valeur souhaitéeDonc en suivant l'exemple ci-dessus:
Le code utilisé dans l'exemple réinitialisera la valeur (: title) de @movie passée par le formulaire. Si vous devez accéder à la valeur (: title) d'un film, au lieu de le réinitialiser, procédez comme suit:
Encore une fois, n'utilisez que ma réponse: vous ne souhaitez pas réinitialiser la valeur soumise par l'utilisateur.
J'espère que cela a du sens.
la source
simple_form_for
, lahidden
méthode utilisant ici va générer une erreurundefined method
cachée 'for # <SimpleForm :: FormBuilder: 0x00007ffa6cde0be8> `