未定义的方法`ordinalize' for 3:Fixnum(NoMethodError)

时间:2016-04-03 10:15:19

标签: ruby

我正在尝试格式化Thu, 10th Jan 2016之类的日期。我写了一个方法来获取当前时间,并使其显示为上述格式。

def time_format(ob_created_at)
  ob_duplicate = ob_created_at
  ob_duplicate = ob_created_at.strftime("%a")
  day = ob_created_at.strftime("%d")
  day = day.to_i.ordinalize
  ob_duplicate = ob_duplicate + day +  ob_created_at.strftime("%b %Y")
 end

t = Time.now
time_format(t)

day是字符串。我尝试转换为int,并在其上应用ordinalize。它引发了一个未定义的方法错误。

2 个答案:

答案 0 :(得分:6)

ordinalize不是Ruby方法,但它是由Rails'提供的方法。 function auto_loader($classname) { //search in the classes folder for a class file. include 'classes/' . $classname . '.php'; } function auto_load_somethingelse($class){ //include here } //register the autoloaders spl_autoload_register('auto_loader'); spl_autoload_register('auto_load_somethingelse'); 宝石。

我认为,当你需要的只是一个简单的方法时,将ActiveSupport gem添加到项目中是不值得的。查找其实施here,另请注意上面的ActiveSupport

您只需要这两种方法:

ordinal

答案 1 :(得分:1)

Fixnum#ordinalize不在ruby核心库中。请参阅Ruby Doc

Fixnum#ordinalize Active Support 的一部分,它是Rails的依赖项,因此您可以在Rails应用程序中免费使用此方法,但在非rails项目中,您必须安装有效支持,至少需要active_support/core_ext/integer/inflections才能访问它。