2012-05-23 3 views
1

Я пробовал решить эту проблему весь день, но не получил никакого решения, так что, пожалуйста, помогите мне? Описание проблемы: Программа должна быть в состоянии отобразить трассу крошки для данной категории Категория/Подкатегория. Исключить: Входы: Связи с общественностью Результат: Бизнес & Финансы >> Реклама & Маркетинг >> Связи с общественностью.создание категорий и подкатегорий с использованием языка Ruby

Бизнес & Финансы является основной категорией, Реклама & Маркетинг является ее подкатегорией и общественными отношениями является подкатегорией Adv & маркетинг.

Я думал о его реализации с помощью рекурсии, но я не совсем уверен, как это сделать.

Спасибо, Джимми

+0

Является ли это модель ActiveRecord? Просто используйте поле parent_id. – pguardiario

+0

Нет, это нужно делать только в обычном рубине. Спасибо, хотя –

ответ

0

Предполагая, что это обычный рубин вы могли бы сделать что-то вроде этого:

class Category 
    def initialize name, parent = nil 
    @name = name 
    @parent = parent 
    end 

    def display 
    @parent ? "#{@parent.display} >> #{@name}" : name 
    end 

    def name 
    @name 
    end 
end 

и использовать его как так

1.9.2p320 :046 > c = Category.new "Parent" 
=> #<Category:0x000001009c46d0 @name="Parent", @parent=nil> 
1.9.2p320 :047 > sub = Category.new "Sub", c 
=> #<Category:0x000001009bf860 @name="Sub", @parent=#<Category:0x000001009c46d0 @name="Parent", @parent=nil>> 
1.9.2p320 :048 > sub.display 
=> "Parent >> Sub" 
+0

Спасибо большое froderik, я думал, что это делается с помощью рекурсии, но я думаю, что ваш метод выглядит лучше. –

+0

На самом деле это рекурсивный. :-) но, возможно, не так, как вы ожидали! – froderik

Смежные вопросы