1

我正在尝试覆盖由 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

这是有道理的,但 require 非常难看。是否有某种 Rails 魔法可以让我避免最初的需求?

4

1 回答 1

1

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

似乎更多的是加载时间问题。如,您的文件在插件之前被加载。你的行动在哪里?配置/初始化程序?库?

我不确定 Rails Engines 何时加载,因此请使用该位置(应该将其放入 lib 中)。

或者,更好的是,使用更改创建您自己的插件,并确保它在原始插件之后加载。

你可能想要更多类似的东西:

SomeController.class_eval do

  def index
    ...
  end

end
于 2009-12-01T01:54:00.900 回答