Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 如何使动态添加的方法对Rails 4.2.0控制器可见?_Ruby On Rails 3_Ruby On Rails 4_Rails Engines - Fatal编程技术网

Ruby on rails 3 如何使动态添加的方法对Rails 4.2.0控制器可见?

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 在应用程序控制器

以下是在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\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
,它解决了问题

为了让路由器看到添加的操作,您可以包括您使用的代码和放置的位置吗?