Я использую драгоценный камень awesome_nested_set, расположенный здесь https://github.com/collectiveidea/awesome_nested_set. Я хотел бы сделать родительские категории ярлыками optgroup, но я не понимаю, как это сделать, или если это возможно. Есть ли пример такого поведения?awesome_nested_set с метками optgroup
2
A
ответ
1
Это, безусловно, не самый эффективный способ сделать это, но он отвечает требованию задачи.
<select name="category_id" data-placeholder="Select a Category" class="chzn-select">
<option value=""></option>
<% @cats.each do |cat| %>
<optgroup label="<%= cat.name %>">
<% cat.children.each do |child| %>
<option value="<%= child.id %>"><%= child.name %></option>
<% end %>
</optgroup>
<% end %>
</select>
0
Немного поздно, но у меня был тот же вопрос, и решить ее с помощью вспомогательного метода в соответствии с https://github.com/collectiveidea/awesome_nested_set/blob/master/lib/awesome_nested_set/helper.rb
module ApplicationHelper
def grouped_nested_set_options(class_or_item, mover = nil)
if class_or_item.is_a? Array
items = class_or_item.reject { |e| !e.root? }
else
class_or_item = class_or_item.roots if class_or_item.respond_to?(:scope)
items = Array(class_or_item)
end
result = []
group = []
items.each do |root|
root.class.associate_parents(root.self_and_descendants).map do |i|
if i.level == 0
group = []
group.push yield(i)
group.push []
result.push group
else
if mover.nil? || mover.new_record? || mover.move_possible?(i)
group[1].push [yield(i), i.primary_id]
end
end
end.compact
end
result
end
end
Таким образом, вы можете просто использовать grouped_nested_set_options вместо nested_set_options и вы все еще можете использовать rails "для создания html.