ruby-on-rails simple_form输入的默认值

hgc7kmma  于 2023-06-07  发布在  Ruby
关注(0)|答案(6)|浏览(185)

我正在尝试做输入的默认值

工作正常:

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

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

<%= f.input :quantity %>
  • 我尝试它与标准的html值-但在unsucessfull验证数量被1覆盖-不希望的
<%= f.input :quantity, input_html: {value: '1'} %>
  • 当我删除值并且验证不成功时,填充了完整的数量-一切正常
<%= f.input :quantity %>

如何解决这个问题?是否有类似于f.input_field -:default的替代方法?还是有其他有价值的解决方案

7tofc5zh

7tofc5zh1#

你可以尝试这样的东西:

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

0pizxfdo2#

可以使用simple_form的selected选项:

<%= f.input :quantity, selected: f.object.quantity || '1' %>
4bbkushb

4bbkushb3#

试试这个:

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

kx1ctssn4#

这是一个老问题了,但我觉得没有一个答案是可以接受的。最好的方法是在控制器的new action中设置值。

def new
   WizBang.new(quantity: 1)

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

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

干净多了

xa9qqrwz

xa9qqrwz5#

你能做到

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

现在,去掉input_html键。

kwvwclae

kwvwclae6#

现在确定重复问题的答案是如何被引用的,但我正在分享一个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中

相关问题