如何将groups_options_for_select与父/子类别一起使用?

时间:2017-03-17 06:45:15

标签: ruby-on-rails

我有一个由acts_as_tree gem管理的类别和子类别表。每个类别都有一个名称和一个parent_id。我希望将它们放入一个看起来像这样的optgroup。只能选择孩子。

  • 家长1

    • 父母1儿童1
    • 父母1儿童2
    • 父母1孩子3
  • 家长2

    • 父2孩子1
    • 父2孩子2
    • 父2孩子3

此下拉列表会转到posts / new.html.erb,以便新帖子可以标记为某个类别。

在类别表中,只有2列。 category_name和parent_id。

最好的方法是什么?我想到了这样的事情:

<%= select_tag :category, grouped_options_for_select(category_option_groups) %>

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这是你检索孩子的方法。

parent1.children # => [Parent 1 Child 1, Parent 1 Child 2, Parent 1 Child 3]
parent1child1.parent # => parent1

现在在您的控制器操作中,我不知道您希望如何派生父项,因此请随意为您的案例采用最佳选项。因此,在这种情况下,我正在考虑之前会有一些操作选择父级...但我可以根据您提供的信息对此进行编辑。

class controller 

 def action
   @parent = Category.find(input_params)
   @childs = @parent.children
 end

 private
 def input_params
   params.require(:parent).permit(:firstfield, :secondfield)
 end
end

这是您的选择标记

<%= select_tag 'category', options_for_select(@childs, @selected_options) %>

act_as_tree

select_tag