Forms Rails:类别的嵌套下拉列表

Forms Rails:类别的嵌套下拉列表,forms,ruby-on-rails-4,ancestry,Forms,Ruby On Rails 4,Ancestry,我正在使用祖先宝石来允许类别嵌套,并且我希望能够创建一个下拉列表,在用户为新产品选择类别时显示嵌套 我可以创建嵌套列表,但它使用父类别作为选项组的标签,而不是作为可选元素 第一次尝试 这会产生如下结果: <select id="product_category_id" name="product[category_id]"> <option value=""></option> <optgroup label="Root Category 1

我正在使用祖先宝石来允许类别嵌套,并且我希望能够创建一个下拉列表,在用户为新产品选择类别时显示嵌套

我可以创建嵌套列表,但它使用父类别作为选项组的标签,而不是作为可选元素

第一次尝试

这会产生如下结果:

<select id="product_category_id" name="product[category_id]">
  <option value=""></option>
  <optgroup label="Root Category 1"></optgroup>
  <optgroup label="Root Category 2">
    <option value="3">Child Category 1</option>
  </optgroup>
</select>

儿童类别1
当我真正想要的只是:

<select id="product_category_id" name="product[category_id]">
  <option value=""></option>
  <option value="1">Root Category 1</option>
  <option value="2">Root Category 2</option>
  <optgroup>
    <option value="3">Child Category 1</option>
  </optgroup>
</select>

根类别1
根类别2
儿童类别1
其他尝试 我还尝试使用内容标记生成列表:

def grouped_options(categories, selected_id = nil)
  body = ''
  categories.map do |category|
    body << content_tag(:option, category.name, { value: category.id, selected: category.id == selected_id })
    if category.children.present?
      body << content_tag(:optgroup) do
        grouped_options(category.children)
      end
    end
  end
  body.html_safe
end
def分组_选项(类别,选定_id=nil)
正文=“”
categories.map do | category|
身体
def grouped_options(categories, selected_id = nil)
  body = ''
  categories.map do |category|
    body << content_tag(:option, category.name, { value: category.id, selected: category.id == selected_id })
    if category.children.present?
      body << content_tag(:optgroup) do
        grouped_options(category.children)
      end
    end
  end
  body.html_safe
end