在Rails中截断字符串:" ..."长长地出现在弦上

时间:2014-06-24 14:10:48

标签: html ruby-on-rails string truncate

我目前正在尝试截断任何超过65个字符的字符串。

我的代码是

<title><%= truncate(title.html_safe, length:65) %></title>

适用于超过65个字符的标题。但是正好65个字符的标题仍然会被截断。

例如:

  

标题:“这篇文章正好是65个字符的字符   characte“

     

在页面上显示为“此帖子正好是65个字符的字符   人物chara ......“

我不应该使用截断吗?

5 个答案:

答案 0 :(得分:5)

truncate是正确的方法。这可能是您的rails版本中的错误?这是我在控制台上得到的内容:

[5] pry(main)> helper.truncate("This post is exactly 56 characters characters characters characte", length: 65)
=> "This post is exactly 56 characters characters characters characte"
[6] pry(main)> helper.truncate("This post is exactly 56 characters characters characters characte", length: 64)
=> "This post is exactly 56 characters characters characters char..."

我在这个例子中运行Rails 4.0.4。

答案 1 :(得分:3)

  

如果您使用rails 4.2或以上,则可以使用   truncate_words方法。   

<title><%= (title.html_safe).truncate_words(5) %></title>

答案 2 :(得分:1)

  

title =“这篇文章正好是56个字符的字符字符”.length    =&GT; 65

<title><%= truncate(title.html_safe, length:56) %></title>#将被截断

<title><%= truncate(title.html_safe, length:65) %></title>#这应该可行,我只是尝试过。

Rails 3.2.17

答案 3 :(得分:1)

truncate方法正如预期的那样工作。请在调用title.html_safe后输出长度,您的字符串是否可能包含一些尾随空格?

答案 4 :(得分:1)

我们称之为 Ellipsis 。只需添加上述答案,您就可以通过 css,jquery和rails实现省略号。

css:

.truncate {
  width: 250px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

<强> Jquery:

有一个非常好的jquery plugin dotdotdot。我使用过我的一个项目,它就像一个魅力。它巧妙地使用父元素的高度和宽度来显示省略号。

<强> Rails:

Rails有一个文本助手truncate,可以像:

一样使用
<%= truncate("Once upon a time in a world far far away", length: 65) %>

CSS显然是实现省略号的最快捷方式,但它的缺点是没有提供限制角色的方法,让它在多行中工作变得棘手< /强>

Jquery插件dotdotdot 适用于多行,但我不认为它可以选择指定字符限制。

Rails明显将服务器端截断,并允许您选择指定字符数限制。