undefined局部变量或方法`number_to_delimited'

时间:2016-03-07 08:23:08

标签: ruby-on-rails ruby-on-rails-4

我正在使用rails 4.2.5。

在rails API(v4.2.5.2)中,我看到了这个帮手:

number_to_delimited(number, options = {})

  

使用分隔符(例如,12,324)格式化数千个分组的数字。您可以在选项哈希中自定义格式。

http://api.rubyonrails.org/classes/ActiveSupport/NumberHelper.html#method-i-number_to_delimited

但是当我在视图中使用此帮助时,它会引发错误:

undefined method number_to_delimited'代表#<#:0x0000000b091b30>`

其他助手,例如number_to_currency,一切运作良好。我怎么了?

3 个答案:

答案 0 :(得分:4)

尝试改为呼叫ActiveSupport::NumberHelper

ActiveSupport::NumberHelper.number_to_delimited(12345678)
 => "12,345,678"

或者你也可以这样做:

include ActiveSupport::NumberHelper
number_to_delimited(12345678)
 => "12,345,678"

更新:

我在上面的评论中看到你说你正在使用haml代码,你可以这样做:

= ActiveSupport::NumberHelper.number_to_delimited(12345678)

- include ActiveSupport::NumberHelper
= number_to_delimited(12345678)

答案 1 :(得分:2)

只需在ApplicationHelper中包含ActiveSupport :: NumberHelper即可。

module ApplicationHelper
  include ActiveSupport::NumberHelper
end

然后,您可以直接在视图中使用所有数字助手。

<%= number_to_delimited(12345678) %>

答案 2 :(得分:1)

number_to_delimitedActiveSupport::NumberHelper中的一种方法,不能直接在视图中使用。

Rails在ActionView::Helpers::NumberHelper中提供了一些数字助手,这些助手被委托给ActiveSupport::NumberHelper中的方法。

  • number_to_currency
  • number_to_human
  • number_to_human_size
  • number_to_percentage
  • 电话号码
  • number_with_delimiter
  • number_with_precision

例如,如果要定界数字,则应改为呼叫number_with_delimiter,后者将在number_to_delimited中呼叫ActiveSupport::NumberHelper

# File actionview/lib/action_view/helpers/number_helper.rb, line 244
def number_with_delimiter(number, options = {})
  delegate_number_helper_method(:number_to_delimited, number, options)
end

希望有道理。干杯。