55

我有这段代码:

= f.input :category, :as => :select, :label => false, :collection => Choices["Categories"]

Choices["Categories"] 只是 key=>value 对的散列。

SimpleForm 生成一个包含所有需要选项的选择字段,但它也使第一个选项为空。
此空白选项出现在 SimpleForm 生成的所有选择字段中。

但我不想有一个空白选项。有没有办法摆脱它?

:allow_blank_option => false什么?

我试图对此属性进行存在验证,希望 SimpleForm 能够检测到它,但它没有帮助。

4

3 回答 3

102

您可以传递一个include_blank: false, include_hidden: false选项:

= f.input :category, :as => :select, :label => false, :collection => Choices["Categories"], include_blank: false, include_hidden: false
于 2013-02-28T18:54:23.823 回答
2

或者您可以在模型中自定义回调操作以删除数组参数中的任何空字符串,假设参数名称为“types”:

before_validation :remove_empty_string

def remove_empty_string
  types.reject! { |l| l.empty? }
end
于 2015-03-18T22:19:48.970 回答
0

要从选择中删除空白字段,有必要显示选定的因此添加selected: 1 然后将提示设置为类似prompt: "Please Select" 的任何内容最终输出将是 <%= select("social_links",:option_id, Option.all.collect {|p| [ p.name, p.id ] },{ selected: 1 , prompt: "Please Select"}, { class: 'form-control' , required:true})%>

于 2018-07-06T14:46:56.053 回答