首页 > 解决方案 > Ruby 未定义方法“to_sentence”

问题描述

我正在对 Codewars 进行 Ruby 培训,但我遇到了一些问题。

我必须这样做:

list([ {name: 'Bart'}, {name: 'Lisa'}, {name: 'Maggie'} ])
# returns 'Bart, Lisa & Maggie'

所以我尝试了这段代码:

def list names
  names.map(&:values).flatten.to_sentence(last_word_connector: ' &')
end

但不幸的是,我有这个错误:

main.rb:4:in `list': undefined method `to_sentence' for ["Bart", "Lisa", "Maggie", "Homer", "Marge"]:Array (NoMethodError)
Did you mean?  to_set
    from main.rb:6:in `<main>'

我一直在寻找几个小时,我不明白为什么'to_sentence'不起作用......

谢谢。

标签: ruby

解决方案


Array#to_sentence是一种 ActiveSupport 方法。ActiveSupport 是一个 Ruby gem,它为现有的类添加了许多有用的实用方法。您需要安装并要求 gem 确保已加载

gem install activesupport

然后,在文件的顶部,

require 'active_support/all'

如果您正在编写 Rails 项目,那么您可以免费获得 ActiveSupport。但是,如果您正在编写标准 Ruby,则必须要求它。


推荐阅读