我有一個Web應用程序,其中包含大約1200個類別的主頁上發佈的類別樹。此類別樹使用acts_as_tree(parent_id等)構建,它使用<ul>
和<li>
在html中構建樹。Rails:在服務器啓動時預加載/創建部分服務
如果我直接發佈樹,它的效果非常好,但實際上非常慢(加載時間約爲4秒),這對於主頁顯然不合適。
好的是,這個類樹很少改變,所以它可以在服務器啓動時建立。因此,我所做的就是創建一個初始化器category_tree.rb並將其放入初始化器文件夾中。
我做了一個全局變量$ category_tree和「插入HTML」中就有的排序是這樣的(這是一個過於簡單的例子):
def create_tree(categories)
ret = '<ul>'
categories.each do |cat|
ret = "<li><a href='" + cat.url + "'>" + cat.name + "</a>"
end
ret = '</ul>'
end
$category_tree = create_tree(Category.all)
,然後在我的索引視圖我簡單地說:
<%= $category_tree %>
這一切正常!它加載速度快並且正確。但是,我有一些問題,我想一些幫助:
使用
<a href>
不會在長期運行非常穩定。我更喜歡使用link_to和路徑,但問題是我的初始化程序在routes.rb之前加載它似乎。這使得例如不可能調用category_path。我該如何解決這個問題?我怎樣才能加載後的routes.rb category_tree.rb加載?我不知道如果使用這樣的全局變量是非常聰明的。我想象它會一直在內存中保留我的分類樹HTML,我認爲這不是太聰明。它是否正確?
我更喜歡的是在啓動時創建一個包含我可以使用路徑/路徑的html類別樹的部分。不需要在內存中保留任何內容的解決方案。我該如何解決這個問題?
正是我在找的東西。像魅力一樣工作! – Christoffer
很高興聽到它解決了你的問題! –