我们将博客文章存储在数据库的文本列中。我们的博客主页需要博客文章的“预览”。这样,我们可以显示最近几天的博客文章以及阅读全文的链接。
rails 有没有办法拉出一定数量的文本列?也许是第一个x bytes
?我知道每篇博客文章的长度都不一样,但它应该在一般区域得到它。
或者也许做一些 html/css hack,我们溢出一个 div 并向 div 添加一个椭圆?
我还可以看到创建一个单独的“预览”列,但这感觉很hacky。
导轨 3.2.1。数据库是 MySQL
我们将博客文章存储在数据库的文本列中。我们的博客主页需要博客文章的“预览”。这样,我们可以显示最近几天的博客文章以及阅读全文的链接。
rails 有没有办法拉出一定数量的文本列?也许是第一个x bytes
?我知道每篇博客文章的长度都不一样,但它应该在一般区域得到它。
或者也许做一些 html/css hack,我们溢出一个 div 并向 div 添加一个椭圆?
我还可以看到创建一个单独的“预览”列,但这感觉很hacky。
导轨 3.2.1。数据库是 MySQL
您可以选择列中文本的第一个(或最左边)字符:
SELECT LEFT(POST_BODY, 40) FROM BLOG_POSTS
通常最好让数据库“完成工作”。但是,如果您要在用户单击“更多”时使用博客文章的其余部分,请选择整个文章并使用 Ruby 的字符串方法将其拆分。
如果我理解正确,您需要将长文本条目转换为有限预览文本的东西,例如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 += "..."