Rails: Undefined method `truncate' for main:Object
我需要按照Rails API ActionView :: Helpers :: TextHelper上的说明在rails控制台中执行此操作
在下面的Stackoverflow讨论中,我已经找到了解决我问题的方法,但是我可以很好地发布该问题。
如果要我删除它,请告诉我。
我想在Rails控制台中创建
1 2 | texthelper = ActionView::Helpers::TextHelper => ActionView::Helpers::TextHelper |
我创建一个字符串
1 2 | string ="I want to call the truncate method" =>"I want to call the truncate method" |
我想在控制台中的此字符串上调用truncate方法。
1 2 | truncate(string, length: 25, omission: '... (continued)') =>"And they f... (continued)" |
当我在控制台中输入时:
1 | truncate("Once upon a time in a world far far away", length: 17, separator: ' ') |
我收到
1 | undefined method `truncate' for main:Object |
整个想法都来自这篇文章。
模型
中的未定义方法" truncate"
对于Rails 6和ruby 2.6。*,可能会有一些问题,至少我在截取RTF文本时遇到了一个不确定的错误。因此,在ActionText和Truncate中,我找到了解决方案,它可能很有用=>
1 | <%= truncate(strip_tags(blog.body.to_s), length: 450) %> |
我在下面的讨论中找到了答案型号中的未定义方法'truncate'
我应该使用以下命令在我的Rails控制台中包含ActionView :: Helpers :: TextHelper。
1 | include ActionView::Helpers::TextHelper |
然后我可以调用truncate方法。
1 2 | truncate(string, length: 17, separator: ' ') =>"this is a tesf..." |
我现在的理解是,通过
添加到Ahsan的答案中
在Rails 6应用程序上工作时,我尝试在具有ActionText属性的视图上添加调用
就是这样,我有一个名为About的模型,其属性为
因此,当我尝试使用以下方法在视图中调用
1 | <%= about.body.truncate(30) %> |
我得到了错误:
1 | undefined method `truncate' for #<ActionText::RichText:0x00007fe5c4828488> |
这是我修复的方式:
按照Ahsan的回答,我只是将代码行修改为此:
1 | <%= truncate(strip_tags(about.body.to_s), length: 30) %> |
它像魅力一样工作。
您可以在Official Rails文档中阅读有关truncate方法的更多信息:ActionView Truncate
仅此而已。
我希望这会有所帮助
在Rails控制台中遵循以下步骤:
1 2 3 | include ActionView::Helpers::TextHelper truncate(string, length: 25, omission: '... (continued)') =>"Once upon ... (continued)" |
此处" ActionView :: Helpers :: TextHelper"是模块,提供了一组用于格式化和转换字符串的方法。
截断方法位于TextHelper模块中,因此您必须将其包含在控制台中。