rake任务和模型方法中的未定义方法错误

时间:2011-08-10 05:53:25

标签: ruby-on-rails-3

我正在尝试使用number_to_currency返回一个总和,但每当我尝试在rake任务或模型类实例中使用此方法时,我得到NoMethodError: undefined method 'number_to_currency' for main:Object

也在控制台中发生。关于为什么我不能在rake任务或模型中使用基本方法的任何建议?

2 个答案:

答案 0 :(得分:2)

number_to_currency是一个视图助手,因此通常只在视图中可用。你可以这样做:

include ActionView::Helpers::NumberHelper
如果您需要在其他地方使用它,请在类中进行操作。尽管如此,请考虑一下你的设计,使用视图助手同时在控制台中搞乱是很好但你通常想要将格式推到边缘(即视图)。

答案 1 :(得分:1)

以下是它的工作原理:

创建一个文件夹RAILS ROOT / lib / core_extensions 在那里,创建一个名为fixenum_extensions.rb的文件 将下面的代码复制/粘贴到该文件中。 在您的environment.rb文件中,输入以下行:

RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT)

这一行:

require "#{RAILS_ROOT}/lib/core_extensions/fixnum_extensions"

然后重新启动您的应用

###

require 'rubygems'
require 'action_view'

class Fixnum
  def to_currency(options = {})
    ActionView::Base.new.number_to_currency(self, options)
  end
end

###