Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails是/是多元化的_Ruby On Rails - Fatal编程技术网

Ruby on rails RubyonRails是/是多元化的

Ruby on rails RubyonRails是/是多元化的,ruby-on-rails,Ruby On Rails,有没有一个助手可以避免这种代码 = @leads.length == 1 ? 'is' : 'are' 我知道多元化,但在这种情况下没有帮助。我知道编写一个助手是件小事,我想知道Rails API中是否有我忽略的东西 谢谢 -蒂姆也许你可以使用复数并为“is”添加一个词形变化 Inflector.inflections do |inflection| inflection.irregular "is", "are" end 所以 'is'.pluralize # => 'are'

有没有一个助手可以避免这种代码

= @leads.length == 1 ? 'is' : 'are'
我知道多元化,但在这种情况下没有帮助。我知道编写一个助手是件小事,我想知道Rails API中是否有我忽略的东西

谢谢


-蒂姆

也许你可以使用复数并为“is”添加一个词形变化

Inflector.inflections do |inflection|
  inflection.irregular "is", "are"
end
所以

'is'.pluralize # => 'are'

(我没有测试这个解决方案,但它应该可以工作。)

另一个选择是使用rails附带的i18n翻译库

这允许您使用单数和复数版本定义单词或句子(带插入)

尽管这似乎过于复杂,但我强烈建议从一开始就在每个项目中使用i18n,因为它不仅是活动记录错误的逻辑所在,而且使您的应用程序可以很容易地用另一种语言部署

它还提供了许多额外的插件和日期和时间本地化的好处。阅读关于i18n由内而外的内容

如前所述,您需要将is/are添加到Rails拐点。只需td6中的代码,但您需要添加ActiveSupport命名空间:

ActiveSupport::Inflector.inflections do |inflection|
  inflection.irregular "is", "are"
end
现在,Rails内置的helper是多元化的,但是在一个视图中,它不能满足您的需要。 例如:

pluralize(@leads.length,'is')
输出(用于2个引线)

对于你想要的,你需要做你自己的助手,将单词复数,但不输出计数。因此,如果您基于当前的rails多元化:

def pluralize_no_count(count, singular, plural = nil)
  ((count == 1 || count == '1') ? singular : (plural || singular.pluralize))
end
最后,我将选择: 配置 轨道3 轨道2
我认为不存在这样的帮助器,但如果你最终编写了自己的帮助器,你应该看看ActionView::Helpers::TextHelper#pluralize以获得灵感。请注意,不再需要创建自定义帮助器
pluralize
将采用一个参数,如
中的“is”。pluralize(@leads.length)
这是一种非常奇怪的方式,但是谢谢
def pluralize_no_count(count, singular, plural = nil)
  ((count == 1 || count == '1') ? singular : (plural || singular.pluralize))
end
# inflections.rb
Inflector.inflections do |inflection|
  inflection.irregular "is", "are"
  inflection.irregular "has", "have"
end
"#{subject} #{'is'.pluralize(count)} working!"
# application_helper.rb
def signularize_or_pluralize(word, count)
  if count.to_i == 1
    word.singularize
  else
    word.pluralize
  end
end

# in the view view
"#{subject} #{signularize_or_pluralize('is', count)} working!"