模型中未定义的方法`truncate'

时间:2015-03-14 23:46:48

标签: ruby-on-rails ruby

我的模型中有以下方法来裁剪记录的描述,但由于未知原因,截断方法不起作用:

def cropped_description
  nb_words_max = 500
  if description.length > nb_words_max
    truncate(description, :length => nb_words_max, :separator => ' ') + " ..."
  else
    description
  end
end

任何人都能看到我做错了什么?感谢。

3 个答案:

答案 0 :(得分:7)

你使用它错了,你应该在String上调用这个方法。请参阅truncate的签名。

使用:

if description.length > nb_words_max
  description.truncate(nb_words_max, :separator => ' ') + " ..."
else
  ...

答案 1 :(得分:3)

在rails中包括:

 include ActionView::Helpers::TextHelper

但是如果你想用Ruby irb进行测试:

 require 'action_view'
 include ActionView::Helpers::TextHelper 

答案 2 :(得分:1)

您正在寻找的truncate方法是一个视图助手,因此它不会在您的模型方法中可用,您应该从视图中调用truncate。此外,如果视图助手将为您添加省略号,那么您只需说:

<%= truncate(m.description, :length => 500, :separator => ' ') %>