2010-07-02 30 views
0

你好,我所有的同行代碼! 我遇到了問題ohh chok! ..:P 現在我的問題,我正在嘗試做一個更大的網站的設計,它會很好。直到我應該製作內容/新聞滑塊。它應該從多個表中獲取數據並返回到application.html.erb。Rails - 使用SQL的應用程序佈局?

所以它是採取評論和公告只是最新的5,並在最新創建後訂購。然後把它給我application.html.erb .. (Rails 3.0.0.beta4)

希望你們能理解我。

+1

你能改述一下這個問題嗎(或者更具體)?提前致謝。 – 2010-07-02 16:48:36

+0

這是很難解釋,特別是當我對我英語如此糟糕。 但我會嘗試。 我使用漂亮:佈局的佈局部分,所以我創建了一個自定義的application.html.erb文件,因爲我有一個滑塊來滾動新聞,評論和類似的東西。來自多個表格。所以我的問題是如何從我的表中取出數據(請參閱:表格(有幾個表格)),然後將數據取出。就像@posts = Posts.find(..)中的帖子一樣,你明白了嗎? – 2010-07-02 17:43:45

回答

1

對所有模型取最新的5,然後將所有記錄放在數組上,對數組進行排序並取前5個元素。

# consider moving .order('date desc').limit(5) to a named scope or a module 
announcements = Announcement.order('date desc').limit(5) 
posts = Post.order('date desc').limit(5) 
monkeys = Monkey.order('date desc').limit(5) 
# .. add others here 

elements = (announcements + posts + monkeys).sort_by(&:date).reverse[1..5] 

變量elements將有5個,如果它們存在。

注意:我假設您的所有模型都有一個名爲「date」的方法。您可以將其更改爲date_created或其他。

你可以把這段代碼放在幾個地方,但我認爲最好的代碼將是一個專門爲渲染主頁而創建的「家」控制器。元素將根據其顯示動作進行計算。

+0

嘿,謝謝,但你沒有給我答案在我的問題的最後一部分,關於在哪裏放? Wich控制器。不,我沒有日期方法? – 2010-07-03 08:27:08

+0

當然 - 一個家庭控制器是你最好的選擇恕我直言。更新了我的答案。 – kikito 2010-07-03 19:23:11

0

不知道這是否是更好的性能,使用這種語法,而不是一個從egarcia:

elements = (announcements | posts | monkeys).sort_by(&:date).reverse[1..5] 

,如果你需要使用幾頁的代碼(例如在側邊欄),那麼最好的方式可能是寫一個幫手(說:last_items)