Ruby on rails Rails:未定义的方法“truncate';对于main:Object

Ruby on rails Rails:未定义的方法“truncate';对于main:Object,ruby-on-rails,ruby,Ruby On Rails,Ruby,我需要在rails控制台中按照 我已经在下面找到了解决问题的方法,但是我认为这个问题可以发布出来。 如果你想让我删除它,就告诉我 我想在rails控制台中创建一个ActionView::Helpers::TextHelper texthelper = ActionView::Helpers::TextHelper => ActionView::Helpers::TextHelper 我创建一个字符串 string = "I want to call the truncate metho

我需要在rails控制台中按照 我已经在下面找到了解决问题的方法,但是我认为这个问题可以发布出来。 如果你想让我删除它,就告诉我

  • 我想在rails控制台中创建一个
    ActionView::Helpers::TextHelper

    texthelper = ActionView::Helpers::TextHelper
    => ActionView::Helpers::TextHelper
    
  • 我创建一个字符串

    string = "I want to call the truncate method"
    => "I want to call the truncate method"
    
  • 我想在控制台中对这个字符串调用truncate方法

    truncate(string, length: 25, omission: '... (continued)')
    => "And they f... (continued)"
    
  • 在控制台中输入时:

    truncate("Once upon a time in a world far far away", length: 17, separator: ' ')
    
    我收到

    undefined method `truncate' for main:Object
    
    整个想法来源于这篇文章。。
    我在下面的讨论中找到了答案

    我应该在rails控制台中使用以下命令包含ActionView::Helpers::TextHelper

    include ActionView::Helpers::TextHelper 
    
    然后我可以调用truncate方法

    truncate(string, length: 17, separator: ' ')
    => "this is a tesf..."
    

    我现在的理解是,使用
    include
    命令,
    ActionView::Helpers::TextHelper
    中的方法现在可以在控制台中使用<代码>截断方法可以在
    文本
    上执行

    在rails控制台中执行以下步骤:

    include ActionView::Helpers::TextHelper
    truncate(string, length: 25, omission: '... (continued)')
    => "Once upon ... (continued)"
    
    这里的“ActionView::Helpers::TextHelper”模块提供了一组用于格式化和转换字符串的方法


    Truncate方法在TextHelper模块中,所以您必须将其包含在控制台中。

    对于rails 6和ruby 2.6。*,可能存在一些问题,至少我在执行富格文本的Truncate时遇到了一个未定义错误。因此,ActionText和Truncate,我已经找到了解决方案,它可能很有用=>

    <%= truncate(strip_tags(blog.body.to_s), length: 450) %>
    
    
    
    添加到

    在使用Rails 6应用程序时,我尝试在具有ActionText属性的视图上添加调用
    truncate
    方法

    就是这样,我有一个名为About的模型,属性为
    title
    ,ActionText属性为
    body

    因此,当我尝试调用视图中
    body
    的ActionText属性上的
    truncate
    方法时,使用以下方法:

    <%= about.body.truncate(30) %>
    
    
    
    我得到一个错误:

    undefined method `truncate' for #<ActionText::RichText:0x00007fe5c4828488>
    
    未定义#的方法'truncate',我只是将代码行修改为:

    <%= truncate(strip_tags(about.body.to_s), length: 30) %>
    
    
    
    而且它很有魅力

    您可以在官方Rails文档中阅读有关truncate方法的更多信息:

    就这些


    我希望这有帮助

    谢谢你的回复。如果您愿意通过编辑您的帖子来解释这是什么,以及当我将其包含在rails控制台中时会发生什么,我将很高兴接受您的回答ActionText的替代方法