我试图覆盖由一个Rails引擎中定义的控制器的动作。

好像我需要导入原始文件重新打开类,像这样前:

require File.join(RAILS_ROOT, 'vendor/plugins/myplugin/app/controllers/some_controller')
class SomeController

  def index
    render :text => 'this is my index'
  end
end

这是有道理的,但需要相当难看。是否有某种神奇的Rails,让我避免了最初的要求?

有帮助吗?

解决方案

这是一个完整的猜测...

似乎更负载定时问题。正如,你的文件是越来越插件之前加载。哪里是你的行动在什么位置?配置/初始化? LIB?

我不知道什么时候Rails的发动机被加载所以玩的位置(应该把它放在LIB工作)。

或者,更好的是,在插件创建自己与变化,并确保原后装入。

和你可能想要的东西更像是:

SomeController.class_eval do

  def index
    ...
  end

end
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top