ビュー内でのみ機能するようですpluralize
-私のモデルでも使用できる方法はありpluralize
ますか?
12381 次
5 に答える
69
拡張するのではなく、次のようにします。
ActionController::Base.helpers.pluralize(count, 'mystring')
これが他の誰かに役立つことを願っています!
于 2013-09-28T15:21:36.777 に答える
59
これをモデルに追加します。
include ActionView::Helpers::TextHelper
于 2011-07-24T12:06:20.120 に答える
17
私のお気に入りの方法は、モデルで使用するクラスメソッドとしてこれらを提供するTextHelperをアプリで作成することです。
app / helpers / text_helper.rb
module TextHelper
extend ActionView::Helpers::TextHelper
end
app / models / any_model.rb
def validate_something
...
errors.add(:base, "#{TextHelper.pluralize(count, 'things')} are missing")
end
モデルにActionView::Helpers :: TextHelperを含めることは機能しますが、そこにある必要のない多くのヘルパーメソッドをモデルに散らかすこともできます。
また、複数化の方法がモデルのどこから来たのかについても、ほとんど明確ではありません。このメソッドはそれを明示的にします- TextHelper.pluralize
。
最後に、何かを複数形にしたいすべてのモデルにインクルードを追加する必要はありません。TextHelperで直接呼び出すことができます。
于 2012-12-07T15:40:13.130 に答える
4
モデルにこのようなメソッドを追加できます
def self.pluralize(word)
ActiveSupport::Inflector.pluralize(word)
end
このように呼び出します
City.pluralize("ruby")
=> "rubies"
于 2011-07-24T15:44:52.980 に答える
0
これは Rails 5.1 でうまくいきました (2 番目の方法を参照してください。最初の方法はそれを呼び出しています)。
# gets a count of the users certifications, if they have any.
def certifications_count
@certifications_count = self.certifications.count
unless @certifications_count == 0
return pluralize_it(@certifications_count, "certification")
end
end
# custom helper method to pluralize.
def pluralize_it(count, string)
return ActionController::Base.helpers.pluralize(count, string)
end
于 2017-11-23T00:45:38.700 に答える