Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 摘录a";预览“;使用rails发布博客文章_Mysql_Ruby On Rails_Text_Blogs - Fatal编程技术网

Mysql 摘录a";预览“;使用rails发布博客文章

Mysql 摘录a";预览“;使用rails发布博客文章,mysql,ruby-on-rails,text,blogs,Mysql,Ruby On Rails,Text,Blogs,我们将博客文章存储在数据库的文本列中。我们需要一个“预览”的博客文章为我们的博客主页。这样,我们就可以显示最近几天的博客文章,并通过链接阅读整个内容 在rails中是否有办法拉出一定数量的文本列?可能是第一个x字节?我知道这不会是每个博客文章的长度相同,但它应该在一般领域得到它 或者做一些html/css黑客,我们溢出一个div,并在div中添加一个省略 我还可以看到创建一个单独的“预览”列,但这感觉非常粗糙 轨道3.2.1。数据库是MySQL如果我正确理解了,您需要将长文本条目转换为有限的预览

我们将博客文章存储在数据库的文本列中。我们需要一个“预览”的博客文章为我们的博客主页。这样,我们就可以显示最近几天的博客文章,并通过链接阅读整个内容

在rails中是否有办法拉出一定数量的文本列?可能是第一个
x字节
?我知道这不会是每个博客文章的长度相同,但它应该在一般领域得到它

或者做一些html/css黑客,我们溢出一个div,并在div中添加一个省略

我还可以看到创建一个单独的“预览”列,但这感觉非常粗糙


轨道3.2.1。数据库是MySQL

如果我正确理解了,您需要将长文本条目转换为有限的预览文本,比如
这是一个预览文本,它说…

为此,您可以简单地执行以下操作:

text = post.text[0..100] + "..."
它基本上从文本中获取前100个字符。 如果您想要更复杂的内容,需要考虑单词(这样您就不会出现类似于
这是一个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 += "..."
text=post.text
单词=文本。拆分(“”)
final_text=“”
单词。每个单词|
final_text+=如果final_text.size+word.size<所需长度,则为单词
结束
最终文本+=“…”
您可以选择列中文本的第一个(或最左边)字符:

SELECT LEFT(POST_BODY, 40) FROM BLOG_POSTS

通常最好让数据库“完成工作”。但是,如果用户单击“更多”时要使用博客文章的其余部分,请选择整个文章,并使用Ruby的字符串方法将其拆分。

我确信有比.split(“”)更好的拆分文本的方法,但我现在手头没有ruby终端来测试是否可以加载帖子的全部文本Argh,是的,我是说事实上。谢谢Steph。这就是为什么我喜欢RoR,总有一种方法可以做任何你想做的随机疯狂的事情(不是说像这样截断文本是不常见的,但我见过一些使用“foo.methods”的疯狂事情)我更喜欢这种方法而不是另一种方法,这取决于你在一个页面中显示了多少次后期预览。如果不是太多,那么另一种方法会稍微容易一些。在我看来,作为一个开始,我会用另一种方法,如果性能成了一个问题,我会使用上面的select语句来实现。