2012-05-23 37 views
1

我一直試圖解決這個問題整天,但沒有得到任何解決方案,所以你能幫我嗎? 這裏是問題描述: 程序應該能夠顯示給定的 類別/子類別的麪包屑蹤跡。 例如: 輸入:公共關係 輸出:業務&金融>>廣告&營銷>>公共關係。使用Ruby語言創建類別和子類別

這裏商業&金融是主要類別,廣告&營銷是它的子類和公共關係是進階&營銷的子類。

我想過使用遞歸來實現它,但我不太確定如何去做。

感謝, 吉米

+0

這是一個ActiveRecord模式?只需使用parent_id字段。 – pguardiario

+0

不,它只能用普通的紅寶石來完成..雖然 –

回答

0

假設它是純Ruby中,你可以做這樣的事情:

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