在rails中将number_to_phone的area_code默认为true

时间:2015-12-02 05:01:31

标签: ruby-on-rails ruby helper

我在我的应用中多次使用args[i]的{​​{1}}方法。它看起来像这样......

NumberHelper

但我从来没有希望number_to_phone成为number_to_phone(phone_number, area_code: true) 的地方。我应该如何将其默认为true?

3 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是编写自己的方法,仅接受电话号码参数和一些选项,将选项与:area_code的默认值合并,然后调用#number_to_phone。你可以在ApplicationHelper中这样做:

# application_helper.rb

def num_to_phone(phone_number, opts={})
  opts = {area_code: true}.merge(opts)
  number_to_phone(phone_number, opts)
end

这样,您可以使用您的包装方法,而不必担心尝试修补原始方法。

答案 1 :(得分:0)

我想这就是我要找的东西。

# application_helper.rb

def formatted_phone(number, options={area_code: true})
  number_to_phone(number, options)
end

答案 2 :(得分:-1)

1)您可以通过回调方法设置area_code:true,如: -

Class Model
    before_create :set_area_code_to_true

    private
    def set_area_code_to_true
        self.area_code = true
    end
end

2)您可以设置区号的默认值,当通过迁移在表中添加新属性时,如: -

rails g migration add_default_value_to_table

def change
    change_column :table_name, :area_code, :boolean, default: true
end