Je veux faire quelque chose comme ça dans les rails
Voici ce que j'ai jusqu'à présent dans les rails:
<%= form_for @order do |f| %>
<%= f.hidden_field :service, "test" %>
<%= f.submit %>
<% end %>
Mais alors j'obtiens cette erreur:
undefined method `merge' for "test":String
Comment puis-je transmettre des valeurs dans mon hidden_field dans les rails?
Réponses:
Tu devrais faire:
hidden_field
attend un hachage comme deuxième argumentla source
<%= hidden_field_tag :service, "test" %>
lorsque nous n'utilisons pasform_for |f|
...Vous utilisez un hidden_field au lieu d'un hidden_field_tag. Étant donné que vous utilisez la version non _tag, il est supposé que votre contrôleur a déjà défini la valeur de cet attribut sur l'objet qui soutient le formulaire. Par exemple:
manette:
vue:
la source
Cela fonctionne bien dans Ruby 1.9 et rails 4
la source
Une version avec la nouvelle syntaxe pour les hachages dans ruby 1.9:
la source
Cela fonctionne également dans Rails 3.2.12:
<%= f.hidden_field :service, :value => "test" %>
la source
Au fait, je n'utilise pas de champs cachés pour envoyer des données de serveur à navigateur. Les attributs de données sont géniaux. Tu peux faire
Et puis obtenez la valeur d'attribut avec jquery
la source