Default value for input with simple_form

前端 未结 6 1941
小鲜肉
小鲜肉 2021-02-03 16:53

im trying to do default value for input

works ok:

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

but i need f.i

相关标签:
6条回答
  • 2021-02-03 17:34

    This is an old question...but, none of provided answers seem acceptable to me. The best way to do this is to set the value in the controllers new action.

     def new
       WizBang.new(quantity: 1)
    

    This will assign the objects quantity key to value 1 in the new action. The edit action should rely on the object's persisted value, or a params value if validation failed and the form reloaded. The other answers will force the quantity to 1 on edit, even if the user initially saved nil (if you allow nil). Not ok. I would not allow nil, but would include a 0 option in the quantity field.

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

    much cleaner.

    0 讨论(0)
  • 2021-02-03 17:35

    You can use the selected option of simple_form: <%= f.input :quantity, selected: f.object.quantity || '1' %>

    0 讨论(0)
  • 2021-02-03 17:37

    try this:

    = f.input : quantity, input_html: { value: (f.object.quantity.present?) ? f.object.quantity : '1' }
    
    0 讨论(0)
  • 2021-02-03 17:42

    Now sure how a duplicate Question's answers get referenced, but I am sharing an Answer I just left on a question I flagged as a duplicate.

    Here is a summary for this question:

     # simple_form input
     f.input :quantity, input_html: {value: f.object.quantity || '1'}
    

    can become:

     # simple_form input
     = f.input :quantity, input_html: { value: f.object.quantity_with_default }
    
     # Model with date_start attribute
     class Obj
       def quantity_with_default
         # based on your model, you may need this instead: try(:quantity) || '1' 
         quantity || '1' 
       end
     end
    

    This leaves the management of the data and its defaults in the controller instead of sprinkled throughout the HTML

    0 讨论(0)
  • 2021-02-03 17:48

    You can try with something like this:

    <%= f.input :quantity, input_html: {value: f.object.quantity || '1'} %>
    
    0 讨论(0)
  • 2021-02-03 17:52

    You can do

    <%= f.input :quantity, value: f.object.quantity || '1' %>
    

    Nowadays, leaving off the input_html key.

    0 讨论(0)
提交回复
热议问题