2012-10-20 36 views
0

我們將我們的博客文章存儲在數據庫的文本列中。我們需要對博客主頁的博客文章進行「預覽」。這樣,我們可以顯示最近幾天的博客文章,並提供鏈接來閱讀整個內容。使用rails提取博客文章的「預覽」

有沒有辦法在鋼軌拉出一定量的文本列?也許第一個x bytes?我知道每篇博文的篇幅都不一樣,但它應該在一般的地區。

或者,也許做一些HTML/CSS破解,我們溢出一個div並添加一個elipse到div?

我也可以看到創建一個單獨的「預覽」一欄,但感覺非常哈克。

導軌3.2.1。數據庫爲MySQL

回答

0

如果我正確undertood,你想要的東西是一種把長文本進入的有限預覽文本,像This is a preview text, and it says that...

要做到這一點,你可以簡單的做這樣的事情:

text = post.text[0..100] + "..." 

它基本上從文本獲得的第100個字符。 如果你想要更復雜的東西,這需要考慮的話(所以你最終不會得到像This is a previ...這樣的東西,你可以有一個函數將文本分離成單詞並將它們添加到最終文本中,直到達到所需的長度,如:

text = post.text 
words = text.split(" ") 
final_text = "" 
words.each do |word| 
    final_text += word if final_text.size + word.size < DESIRED_LENGTH 
end 
final_text += "..." 
+0

我敢肯定有一個更好的方式來分割文本比.split(」「),但我不手上有紅寶石終端現在來測試 –

+0

[更好的辦法(HTTP://api.rubyonrails .ORG /班/的ActionView /助手/ TextHelper.html#方法-I-節選)如果加載後的所有文本反正 – Zabba

+0

這裏還有'truncate' –

1

您可以選擇第一(或最左邊的)文本的一列字符:

SELECT LEFT(POST_BODY, 40) FROM BLOG_POSTS 

它通常最好讓數據庫「做工作」但是,如果您打算在用戶點擊「更多」時使用博文的其餘部分,請選擇整篇文章並使用Ruby的str進行分割方法。

+0

我更喜歡這種方法而另一個則取決於你在頁面中顯示多少個帖子預覽,如果不是太多,那麼另一種方法稍微容易些,IMO作爲一個開始,我會以另一種方式做,如果性能變得更好我會用上面的select語句來做這個問題。 – Zabba