将列表选项值下拉为null

时间:2010-11-03 08:43:24

标签: ruby-on-rails ruby

我有一个下拉列表,其中包含多个单选按钮值供您选择。如果您不选择选项,则该值将作为null保存在数据库中。但是如果您选择一个选项,则无法取消选中它。所以我需要在下拉列表中使用“未声明”选项,这样可以将值保存为数据库中的null。

如何以最佳方式更改这些设置,以便我可以在数据库中保存null值。我需要更改下面的代码,这样就会出现一个额外的选项“未选中”值,当选择“未选中”时,值null将保存到数据库中

<%= account_pref.input "editorial_#{key}".to_sym, :as => :radio, :collection => options_for(Editorial, key.to_sym), :wrapper_html => { :class => "compact" }, :label => key.titleize  %>

1 个答案:

答案 0 :(得分:1)

我认为只需空字符串即可。

:collection => [['<none>','']] + options_for(Editorial, key.to_sym)

对我来说,这对整数字段有用,对于字符串字段,它可能更难,因为选项值只能是字符串,并且表单中没有真正的空值概念。也许有人在这里知道一个聪明的伎俩,但你总是可以在控制器中解决它:

def create
  @account = Account.new(params[:account])
  @account.editorial = nil if @account.editorial.empty?

  ...
end

或者可能会覆盖模型中的setter来执行相同的操作。但是,这两个选项都有点破解。