在Rails中查找方法定义的抽象方法

时间:2015-09-27 20:31:23

标签: ruby-on-rails ruby methods

背景:

我一直在研究Rails方法number_to_currency,试图找出可用于货币的单位以及如何将它们传递给期权块。继续APIDockRuby on Rails API,并搜索Rails Repository,我还没有找到实际的方法定义。我也尝试在number_to_currency上调用source_location方法,但是这返回了一个错误。

问题:

我正在寻找一种找到任何RoR方法定义的抽象方法。

1 个答案:

答案 0 :(得分:1)

每个ruby对象都有一个名为method的方法。 这个method - 方法可以传递名称,它将返回一个method - 对象,其中包含有关具有给定名称的方法的信息。 这包括有关方法的source_location的信息。

number_to_currency之类的方法是在 view_context 对象上定义的辅助方法,在该对象上执行视图。

请参阅this thread,了解如何在控制台上执行这些操作。

然后你可以检查这些方法:

irb(main):001:0> helper.number_to_currency 3.14
=> "3,14 €"
irb(main):002:0> helper.method(:number_to_currency)
=> #<Method: ActionView::Base(ActionView::Helpers::NumberHelper)#number_to_currency>
irb(main):003:0> helper.method(:number_to_currency).source_location
=> ["/Users/at/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/actionview-4.1.5/lib/action_view/helpers/number_helper.rb", 107]