Длина, указанная вами для truncate
, должна включать ...
, поэтому длины 4 и более должны работать идеально.
Кажется, есть ошибка в методе String#truncate
. Глядя на исходный код , не похоже, что там есть что-то для обработки поставляемых длин менее 3.
Пример:
Когда вы вводите 4
в качестве длины, рельсы вычитают 3
для ...
, оставляя настроенную длину как 1
. Итак, rails использует этот 1
как конечную часть подстроки «abcde»:
"abcde"[0...1] + '...'
# => "a..."
Однако, если вы введете 1
в качестве длины, после вычитания 3
ваша скорректированная длина станет -2
. Включение -2
в диапазон дает вам следующее:
"abcde"[0...-2] + '...'
# => "abc..."