Ruby on rails 3 如何使动态添加的方法对Rails 4.2.0控制器可见?
以下是在Rails 3.2.12中将动态方法添加到应用程序控制器的方式:Ruby on rails 3 如何使动态添加的方法对Rails 4.2.0控制器可见?,ruby-on-rails-3,ruby-on-rails-4,rails-engines,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 在应用程序控制器
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\u wf\u action\u def
中定义的所有方法。然而,升级到Rails 4.2.0后,代码停止工作,应用程序控制器不再能看到这些方法。调试显示base.before_action:load_wf_action_def
正常执行,但其方法未添加到控制器类的action_方法中(AbstractController::ActionNotFound
调用动态方法时)。问题来自action pack中的base.rb。我们不知道到底是什么原因导致base.rb中的更改导致代码中断。是否有人将dynamic method添加到Rails 4的controller中,并希望与大家分享经验?我所做的是将操作手动添加到controller.action\u methods
,它解决了问题 为了让路由器看到添加的操作,您可以包括您使用的代码和放置的位置吗?