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