Rails将方法发送到命名空间模块

时间:2015-03-28 16:53:05

标签: ruby-on-rails ruby dynamic-programming

我试图在命名空间模块中调用一个方法。这就是我想要做的事情,但是我得到了未定义的方法"错误。在没有send方法的情况下调用模块方法是正常的。

variable = send "Namespace::#{type.capitalize}Helper.#{type}_method".to_sym, params

感谢您的帮助。

(Rails 4.1,ruby 2.1.1)

1 个答案:

答案 0 :(得分:1)

variable = "Namespace::#{type.capitalize}Helper".constantize.
  send( "#{type}_method".to_sym, params )

(分为两行,因为尾随.仍然有效。) send采用方法名称,而不是整个Classname.method代码。你现在正在做:

Namespace::SomeHelper.send( "sometype_method".to_sym, params)