我一直在尝试Rails 3提供的String#truncate方法:
irb(main):001:0> "abcde".truncate(1)
=> "abc..."
irb(main):002:0> "abcde".truncate(2)
=> "abcd..."
irb(main):003:0> "abcde".truncate(3)
=> "..."
irb(main):004:0> "abcde".truncate(4)
=> "a..."
irb(main):005:0> "abcde".truncate(5)
=> "abcde"
irb(main):006:0> "abcde".truncate(6)
=> "abcde"我期待的是像"a...","ab...","abc..."这样的东西...
我不明白为什么会这样。
我使用的是Ruby 1.8.7。
发布于 2011-05-19 00:59:34
您提供给truncate的长度应该包括...,因此长度为4或更大的长度应该可以很好地工作。
String#truncate方法中似乎存在错误。查看source code,它看起来没有任何东西可以处理提供的小于3的长度。
示例:
当您提供4作为长度时,rails减去...的3,将调整后的长度保留为1。因此,rails使用该1作为“abcde”子字符串的结束部分:
"abcde"[0...1] + '...'
# => "a..."但是,如果提供1作为长度,则在减去3之后,调整后的长度将变为-2。将-2插入到范围中,您将获得以下结果:
"abcde"[0...-2] + '...'
# => "abc..."发布于 2012-05-17 21:52:04
您可以强制传递预期的行为
:omission => ''截断,截断
https://stackoverflow.com/questions/6048140
复制相似问题