使用simple_form输入的默认值

时间:2013-09-26 13:04:47

标签: ruby-on-rails ruby-on-rails-4 erb simple-form

即时尝试为输入执行默认值

工作正常:

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

但我需要f.input而不是f.input_field

<%= f.input :quantity %> 


  • 我尝试使用标准的html值 - 但是在不成功的验证数量被1覆盖后 - 不受欢迎

    <%= f.input :quantity, input_html: {value: '1'} %>
    
  • 当我删除值并且验证不成功时填充了数量 - 一切正常

    <%= f.input :quantity %>
    

如何解决这个问题? 有没有像f.input_field那样的选择 - :默认? 还是有其他有价值的解决方案?

6 个答案:

答案 0 :(得分:132)

你可以尝试这样的事情:

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

答案 1 :(得分:1)

您可以使用simple_form的selected选项: <%= f.input :quantity, selected: f.object.quantity || '1' %>

答案 2 :(得分:1)

试试这个:

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

答案 3 :(得分:1)

你可以

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

现在,不用按input_html键。

答案 4 :(得分:0)

这是一个古老的问题...但是我提供的答案似乎都不可接受。最好的方法是在控制器的new动作中设置值。

 def new
   WizBang.new(quantity: 1)

这将在新操作中将对象数量键分配给值1。如果验证失败并重新加载了表单,则编辑操作应依赖于对象的持久值或params值。即使用户最初保存nil(如果允许nil),其他答案也会将数量强制为1。不好。我不允许为零,但在数量字段中应包含0选项。

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

更清洁。

答案 5 :(得分:0)

现在确定如何引用重复的问题答案,但是我正在分享一个Answer,我刚刚留下了一个我标记为重复的问题。

以下是此问题的摘要:

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

可以成为:

 # 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

这会将数据及其默认值的管理留在控制器中,而不是散布在整个HTML中