当用户取消选择所有选项时,存储值未设置为零 - rails / simple_form

Stored value not being set to nil when user deselects all options - rails / simple_form

除了一小部分 'bug'

<%= f.input :secondary_role, :collection => UseridRole::VALUES, :include_blank => false,:label => "Secondary Role(s):", :input_html => {  :class => " simple_form_bgcolour simple_form_position overide_selection_field_width", :size => 4, multiple: true }, include_hidden: false, :hint => "Hold shift to select multiple roles" %>

我的用户的次要角色作为数组存储在我的数据库中:-

"secondary_role": ["moderator"]

我的问题是,在用户设置了次要角色的情况下,无法通过取消选择该选项来取消设置。在列表中取消选择并保存选项时,不会发生任何事情。只能通过选择其他选项来删除上述版主。如何在全部取消选择后使数组为空?

删除include_hidden: false选项;隐藏字段可以使这项工作自动进行。

(否则,您需要在接收表单提交的控制器操作中手动处理这种情况。)

正如@matthewd 指出的那样,解决方案是删除 include_hidden: false 选项,尽管这引入了另一个问题,即一个空白数组项被添加到我的角色数组中。

所以,我在每次保存和删除任何空白数组条目之前添加了以下方法来触发:

  def remove_blank_entry
    secondary_role = self.secondary_role
    if secondary_role.include? ""
      secondary_role.delete("")
    end
  end