rails 3:有没有办法在模型中使用pluralize()?似乎只在视图中工作

jpw*_*ynn 36 ruby-on-rails pluralize

它似乎pluralize只适用于视图 - 我的模型是否也可以使用某种方式pluralize

(我的模型中有方法为没有进入视图的用户返回消息字符串 - 例如通过SMS文本消息发送的消息.)

Tom*_*ssi 65

而不是扩展的东西,我只是这样:

ActionController::Base.helpers.pluralize(count, 'mystring')
Run Code Online (Sandbox Code Playgroud)

希望这有助于其他人!

  • 很有帮助.这种情况通常只在模型或控制器中弹出一次.为什么在可以一次完成时添加新行! (2认同)

Sam*_*uby 54

将此添加到您的模型:

include ActionView::Helpers::TextHelper
Run Code Online (Sandbox Code Playgroud)


Edw*_*son 17

我最喜欢的方法是在我的应用程序中创建一个TextHelper,它将这些作为类方法提供给我的模型:

应用程序/佣工/ text_helper.rb

module TextHelper                       
  extend ActionView::Helpers::TextHelper
end                                     
Run Code Online (Sandbox Code Playgroud)

应用程序/模型/ any_model.rb

def validate_something
  ...
  errors.add(:base, "#{TextHelper.pluralize(count, 'things')} are missing")
end
Run Code Online (Sandbox Code Playgroud)

在你的模型中包含ActionView :: Helpers :: TextHelper可以工作,但是你也可以使用许多不需要的辅助方法来丢弃你的模型.

在模型中复数方法的来源也不是很清楚.这种方法使其明确 - TextHelper.pluralize.

最后,您不必为每个想要复数的模型添加一个包含; 你可以直接在TextHelper上调用它.