truncate
旨在用作视图助手。但是,如果需要调用模型方法来创建供控制器使用的字符串(最终目的是将字符串传送给动态生成的javascript)
"#{title}" + " " + "#{main_text.truncate(length: 120)}"
因undefined method 'truncate' for nil:NilClass
而失败
由于"#{title}" + " " + "#{main_text}"
呈现正确,因此该错误具有误导性。
然后一种效果如何截断?
答案 0 :(得分:2)
main_text
是nil
,这就是您收到错误消息的原因
undefined method 'truncate' for nil:NilClass
要确保您处理nil
,可以使用安全的导航操作符
"#{title} #{main_text&.truncate(120)}"
这将适用于ruby 2.3 +
如果您使用的是ruby <2.3,则可以使用
"#{title} #{main_text.try(:truncate, 120)}"
答案 1 :(得分:1)
即使您将SELECT SENDER,SUBJECT,SDATE,MAIL_NO
FROM MAIL
传递给nil
助手,该视图仍应呈现...即这应该不会引发错误。
truncate
因此,请尝试<%= truncate(nil, length: 120) %>
您似乎正在尝试使用Ruby截断而不是Rails视图帮助器...这就是为什么它抛出<%= truncate(main_text, length: 120) %>
的原因。
但是... undefined method 'truncate' for nil:NilClass
仍然是零,您将需要弄清楚这是否是一个问题。
就main_text
正确渲染而言...很可能不是。与上述类似,您可以说
"#{title}" + " " + "#{main_text}"
它仍然会正确显示空白。