Ruby on rails 从Rails引擎重写控制器时是否需要原始文件?
我试图覆盖Rails引擎定义的控制器中的操作 在重新打开类之前,我似乎需要原始文件,如下所示:Ruby on rails 从Rails引擎重写控制器时是否需要原始文件?,ruby-on-rails,rails-engines,Ruby On Rails,Rails Engines,我试图覆盖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
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魔法可以让我避免最初的需求?这是一个完整的猜测 似乎更像是一个加载时间问题。与中一样,您的文件是在插件之前加载的。你的行动地点在哪里?配置/初始化器?自由党 我不确定Rails引擎何时被加载,所以请使用该位置(应该通过将其放在lib中来工作) 或者,更好的做法是,使用更改创建您自己的插件,并确保它在原始插件之后加载 你可能想要更像这样的东西:
SomeController.class_eval do
def index
...
end
end
这是一个完全的猜测 似乎更像是一个加载时间问题。与中一样,您的文件是在插件之前加载的。你的行动地点在哪里?配置/初始化器?自由党 我不确定Rails引擎何时被加载,所以请使用该位置(应该通过将其放在lib中来工作) 或者,更好的做法是,使用更改创建您自己的插件,并确保它在原始插件之后加载 你可能想要更像这样的东西:
SomeController.class_eval do
def index
...
end
end
您可以通过更改
ActiveSupport#require_或_load
自动设置,请参阅您可以通过更改ActiveSupport#require_或_load
自动设置,请参阅