我知道这看起来很傻,但我想在我正在设置的rake任务中调用一些Rails的Text Helpers。 (想象一下复数和循环方法:http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html)
你如何在rake任务中提供这些功能,还是不容易实现?
答案 0 :(得分:9)
在rake任务中扩展ActionView :: Helpers相当混乱 - 基本上包括Rake任务中的所有辅助方法。
ActionController::Base.helpers.pluralize(5, 'dog')
如果您没有计数而您只想复数一个词:
ActiveSupport::Inflector.pluralize('dog')
答案 1 :(得分:3)
添加ActiveSupport和ActionPack作为依赖项可能很费力,只需要方便的文本助手 - 除非您的Rakefile已经加载Rails - 但这是一个示例Rakefile:
require 'rubygems'
require 'activesupport'
require 'actionpack'
require 'action_view/helpers'
extend ActionView::Helpers
task :plural do
puts "I have #{pluralize(5, "dog")}"
puts "You have #{pluralize(1, "dog")}"
end
答案 2 :(得分:3)
require 'active_support/inflections'
require 'action_view/helpers'
extend ActionView::Helpers
task :plural do
puts "I have #{pluralize(5, "dog")}"
puts "You have #{pluralize(1, "dog")}"
end
答案 3 :(得分:1)
如果您只想要字符串的复数形式,您可以直接在其上调用pluralize
,而无需在rake任务中加载任何额外内容:
"dog".pluralize
然后你可以用这样的东西替换复数帮助器:
word = "dog"
if count == 1
plural = "1 #{word}"
else
plural = "#{count} #{word}".pluralize
end
puts plural