我在一个Rails项目中使用带有"read more“链接的truncate。但非常奇怪的是,它在看似随机的地方截断了内容。下面是我视图中的代码:
<%= truncate(simple_format(article.content), length: 500, separator: ".", escape: false, omission: "... #{link_to("Read More", article}") %>我测量了它截断的地方的长度,它是非常随机的(比如278,360,等等)。拆分应该发生在短语的末尾(使用separator: "."),我正在检查它是否可能与此相关,但不是。即使有500个字符以内的其他短语,它也会在前面拆分。
删除omission参数实际上解决了这个问题。我想知道为什么会发生这种事。
发布于 2020-08-01 08:15:32
转义的HTML字符实际上计入长度。这包括你文章的链接和标题。
默认在Rails中,您文章的链接将类似于/articles/1。但是,如果您使用像friendly_id这样的gem来创建像/some-slugged-article-title这样的阻塞URL,那么每个文章链接将有不同的长度。这就是在截断长度中产生这种变化的原因。
为了拆分大约500个字符的可视文本,您需要在length参数中添加文章标题的长度。您可以使用以下命令来执行此操作:
<%= truncate(simple_format(article.content), length: 500 + article.title.length, separator: ".", escape: false, omission: "... #{link_to("Read More", article)}") %>https://stackoverflow.com/questions/63200552
复制相似问题