【问题标题】:Can't get pluralize/singularize working with ActiveSupport::Inflector (in irb)无法使用 ActiveSupport::Inflector 获得复数/单数化(在 irb 中)
【发布时间】:2011-07-05 16:10:48
【问题描述】:
irb(main):001:0> require 'active_support'
=> true
irb(main):002:0> require 'active_support/inflector/inflections'
=> true
irb(main):003:0> ActiveSupport::Inflector.pluralize('test')
=> "test"
irb(main):004:0> ActiveSupport::Inflector.singularize('tests')
=> "tests"
irb(main):005:0> ActiveSupport::Inflector.titleize('hat simulator')
=> "Hat Simulator"
<ort::Inflector.tableize("america's number one hat simulator")
=> "america's number one hat simulator"

嗯,基本上,这就是问题所在。令我困惑的是,titleize 之类的方法似乎可以正常工作,但 tableizepluralizesingularize 却不行。

我忘了要求什么吗?

(在单独的说明中,我注意到this page 提供了类似"post".pluralize 的示例,当我尝试时,结果为NoMethodError: undefined method 'pluralize' for "post":String。但也许这是为了另一个问题而保留的东西。)

【问题讨论】:

    标签: ruby activesupport


    【解决方案1】:

    无需向String 类添加新方法即可访问#pluralize

    require 'active_support/inflector'
    ActiveSupport::Inflector.pluralize('test')
    #=> "tests"
    

    对于String 类:

    require 'active_support/core_ext/string'
    "test".pluralize
    #=> "tests"
    

    实际上在下面调用ActiveSupport::Inflector.pluralize

    def pluralize
      ActiveSupport::Inflector.pluralize(self)
    end
    

    【讨论】:

    • 这对我有用,但我很好奇必须在控制器中包含助手是否是特定代码气味的标志?我觉得我不应该做这一切......
    猜你喜欢
    • 2011-05-11
    • 2020-12-15
    • 1970-01-01
    • 2013-07-26
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多