0

我有桌子

id | name          |pid
--------------------
1  | Cetegory1     | 0
--------------------
2  | SubCatregory1 | 1
--------------------
3  | SubCatregory2 | 1
--------------------
4  | Cetegory2     | 0
--------------------
5  | SubCatregory1 | 4
--------------------
6  | SubCatregory2 | 4

如何在 ActeveRecord Rails3 中从此表中选择树类别?

  • 第一类

-- 子类别 1

-- 子类别 2

  • 第 2 类

-- 子类别 1

-- 子类别 2

4

1 回答 1

0

在控制器上:

# select category with condition pid = 0
@categories = Category.where(:pid => 0)

在视图中:

<ul>
<% @categories.each do |c| %>

    <li><%= c.name %><li>
      # check if category not have subcategory 
      <% if Category.where(:pid => c.id ).empty? %>

      <% else %> 
       <dl>
        # select subcategory with condition pid = c.id
        <%  Category.where(:pid => c.id ).each do |sc| %>
         <dd>-- <%= sc.name %></dd>
        <% end %>
       </dl>
     <% end %>
<% end %>

结果 :

  • 第一类

    -- 子类别 1

    -- 子类别 2

  • 第 2 类

  • 第 3 类

    -- 子类别 1

    -- 子类别 2

于 2013-05-29T20:14:03.690 回答