如何使Rails 4.2.0控制器可以看到动态添加的方法?

时间:2015-02-27 03:57:48

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

以下是在Rails 3.2.12中将动态方法添加到应用程序控制器的方法:

 module WfHelper
    extend ActiveSupport::Concern
    included do
       before_action :load_wf_action_def
    end

    protected
    def load_wf_action_def
      #load methods with eval()
    end
  end

在应用程序控制器中,包含模块wf_helper:

 include WfHelper

load_wf_action_def中定义的所有方法都可供应用程序控制器使用。但是,在升级到Rails 4.2.0之后,代码停止工作,应用程序控制器不再显示这些方法。调试显示base.before_action :load_wf_action_def正常执行,但调用动态方法时,其方法未添加到控制器类action_methodsAbstractController::ActionNotFound)。问题来自action pack中的base.rb.我们不知道base.rb的确切变化导致代码被破坏了。是否有人为Rails 4的控制器添加了动态方法,并希望分享经验?

1 个答案:

答案 0 :(得分:0)

我所做的是手动将操作添加到Controller.action_methods,它解决了问题。