无法使用 ActiveSupport::Inflector 获得复数/单数化(在 irb 中)
Posted
技术标签:
【中文标题】无法使用 ActiveSupport::Inflector 获得复数/单数化(在 irb 中)【英文标题】:Can't get pluralize/singularize working with ActiveSupport::Inflector (in 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
之类的方法似乎可以正常工作,但 tableize
、pluralize
和 singularize
却不行。
我忘了要求什么吗?
(在单独的说明中,我注意到this page 提供了类似"post".pluralize
的示例,当我尝试时,结果为NoMethodError: undefined method 'pluralize' for "post":String
。但也许这是为了另一个问题而保留的东西。)
【问题讨论】:
【参考方案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
【讨论】:
这对我有用,但我很好奇必须在控制器中包含助手是否是特定代码气味的标志?我觉得我不应该做这一切......以上是关于无法使用 ActiveSupport::Inflector 获得复数/单数化(在 irb 中)的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 StorageClass 配置卷 - 无法获取存储帐户的存储密钥
Worklight Studio 和本地开发,有时无法使用 Java 类,有时无法使用 HTML 文件
Ubuntu 80端口无法使用-非root用户无法使用1024以下端口