[英]How to use acronym for helper module name in rails
我有一个名称缩写的模型,因此我将其配置为:
ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.acronym 'GNU'
end
我为该模型创建了帮助程序模块。
module GNUsHelper
end
然后我Circular dependency detected while autoloading constant GnusHelper
错误Circular dependency detected while autoloading constant GnusHelper
。
看起来Rails正在寻找骆驼箱模块。
如何在Rails中使用首字母缩写词帮助器模块?
对于仍然对此感到疑惑的任何人。 只需定义首字母缩写及其复数形式,如下所示:
ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.acronym 'GNU'
inflect.acronym 'GNUs'
end
在这种情况下,ActiveSupport将GNUsHelper读取为两个单独的单词,它们由驼峰分隔(“ GNUs”和“ Helper”)。 您还必须定义“ GNU”作为此功能的首字母缩写。
此外,也无需在ActiveSupport.inflections
块中调用inflect.titleize
, inflect.camelize
或inflect.underscore
。 (块中的所有内容都为整个应用程序定义了变形规则,而titlelize并非规则)
该文档建议定义首字母缩略词的复本版本,以避免此类问题。
来自文档
http://api.rubyonrails.org/classes/ActiveSupport/Inflector/Inflections.html#method-i-acronym
注意:传递给复数形式的首字母缩写将不再被识别,因为首字母缩写词不会在复数结果中作为定界单元出现。 要变通解决此问题,您还必须指定复数形式作为首字母缩写词:
acronym 'API'
camelize(pluralize('api')) #=> 'Apis'
acronym 'APIs'
camelize(pluralize('api')) #=> 'APIs'
http://api.rubyonrails.org/classes/ActiveSupport/Inflector/Inflections.html#method-i-acronym
看起来您可能需要指定此单词的其他形式。
ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.acronym 'GNU'
inflect.titleize 'GNU'
inflect.camelize 'GNU'
inflect.underscore 'GNU'
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.