【问题标题】:Truncate string in Rails: "..." showing up on strings at length在 Rails 中截断字符串:“...”出现在字符串中的长度
【发布时间】:2014-08-14 20:19:33
【问题描述】:

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

我的代码是

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

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

例如:

title:"这篇文章正好是 65 个字符 characters characters 性格”

在页面上显示为“这篇文章正好是 65 个字符 字符 chara..."

我不应该使用截断吗?

【问题讨论】:

    标签: html ruby-on-rails string truncate


    【解决方案1】:

    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。

    【讨论】:

    • 这很奇怪。感谢大家的快速回复 - 我会检查我的版本。
    【解决方案2】:

    如果您使用rails 4.2 或更高版本,则可以使用 truncate_words 方法。

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

    【讨论】:

    • 这会截断单词的数量,而不是字符
    【解决方案3】:

    title = "这篇文章正好是 56 个字符 characters characters characte".length => 65

    &lt;title&gt;&lt;%= truncate(title.html_safe, length:56) %&gt;&lt;/title&gt;# 将被截断

    &lt;title&gt;&lt;%= truncate(title.html_safe, length:65) %&gt;&lt;/title&gt; # 这个应该没问题,我刚试过。

    Rails 3.2.17

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        我们称之为 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 显然是实现省略号的最快方法,但它的缺点是它没有提供限制字符的方法,而且很难让它适用于多行。。 p>

        Jquery 插件 dotdotdot 适用于多行,但我认为它也没有指定字符限制的选项。

        Rails 显然会截断它服务器端,并允许您选择指定字符限制。

        【讨论】:

          猜你喜欢
          • 2015-03-12
          • 1970-01-01
          • 2013-10-10
          • 2023-02-21
          • 1970-01-01
          • 2015-04-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多