web-dev-qa-db-fra.com

Valeur par défaut pour l'entrée avec simple_form

im essayant de faire la valeur par défaut pour l'entrée

fonctionne bien:

<%= f.input_field :quantity, default: '1' %> 

mais j'ai besoin de f.input pas f.input_field

<%= f.input :quantity %> 


  • je l’essaye avec une valeur html standard - mais après validation, la quantité de validation est annulée de 1 - non souhaitée

    <%= f.input :quantity, input_html: {value: '1'} %>
    
  • quand je supprime la valeur et que la validation est insuffisante, la quantité est renseignée - tout va bien

    <%= f.input :quantity %>
    

comment résoudre ce problème? existe-t-il une alternative comme dans f.input_field -: default? ou existe-t-il une autre solution de valeur?  

52
patie

Vous pouvez essayer avec quelque chose comme ça:

<%= f.input :quantity, input_html: {value: f.object.quantity || '1'} %>
131
Oleg Haidul

essaye ça:

= f.input : quantity, input_html: { value: (f.object.quantity.present?) ? f.object.quantity : '1' }
1
Kiry Meas

Vous pouvez utiliser l'option selected de simple_form: <%= f.input :quantity, selected: f.object.quantity || '1' %>

1
Stefan Lyew

C'est une vieille question ... mais aucune des réponses fournies ne me semble acceptable. La meilleure façon de faire est de définir la valeur dans la nouvelle action des contrôleurs.

 def new
   WizBang.new(quantity: 1)

Cela affectera la clé de quantité d'objets à la valeur 1 dans la nouvelle action. L'action d'édition doit s'appuyer sur la valeur persistante de l'objet ou sur une valeur params si la validation échoue et si le formulaire est rechargé. Les autres réponses forceront la quantité à 1 lors de l'édition, même si l'utilisateur avait initialement enregistré nil (si vous autorisez nil). Pas d'accord. Je ne permettrais pas nil, mais inclurais une option 0 dans le champ quantité.

f.input :quantity, collection (0..100)

beaucoup plus propre.

0
hellion