我正在開發一個社區/新聞文章網站,在幾乎所有頁面上都有一個帶有不同「塊」的側欄。在這些塊中有「最近的文章(顯示最近的五篇文章)」,「最近的博客」,「最近的評論」,你會得到漂移。Ruby on Rails - 加載側欄內容/塊的最佳實踐/方法
當我開始構建應用程序,我不是真的知道在哪裏把控制器代碼(比如,調用@recent_articles = Article.where ...等)。我不認爲它可以進入文章控制器,因爲它並不總是被調用的文章控制器。所以我認爲它在應用程序控制器中效果最好,因爲網站上的大多數內容都會調用它。我把「@recent_content」放到應用程序控制器中,做了一個:before_filter來加載它。
你可能會看到這個缺陷。隨着Rails的進一步發展,我重新回到了重構的階段,因爲該網站的負載非常可怕並且足夠可靠,我的所有在before_filter定義的應用程序控制器中的邏輯被加載到的每個動作上,無論它是否需要,或者不。 (當我清理應用程序控制器上的房屋時,該網站顯着加速)。
我的錯誤已經實現,但我仍然需要爲@recent_articles,@recent_blogs等定義實例變量,,,因此它們只在需要時加載。當然,我最終會在網站內容緩存時將其緩存,但我希望成爲一名優秀的Rails程序員。
因此,這裏是我的問題......你究竟是如何處理這種情況,你會在哪裏把邏輯?我能想到的兩種方式,不知道哪一個比較好...
第一種方式......我看了一下從另一個Rails開發一個項目,我注意到他創建的文件做奇怪的事情就是這樣在/ lib文件夾中。例如,定義頁面元標記或活動菜單狀態的方法。老實說,我之前沒有搞清楚/ lib文件夾,認爲我的大部分東西都應該留在/ app文件夾中。
第二種方式......在我看來,像幫手似乎是要走的路。也許我可以定義一個「recent_articles」助手,在那裏調用我的@recent_articles實例變量,然後渲染並將結果傳遞給我的共享文件夾中的視圖文件。
總體而言,其通過以下方式之一是更好的方式去,無論是從性能或最佳實踐的觀點?或者有沒有更好的方法來做到這一點,我不知道?
啊,所以這些都是我看到的lib文件夾中的模塊。看起來我將不得不閱讀那些......似乎是我需要去的路線。非常感謝。 – Shannon 2011-03-31 05:32:17