【问题标题】:Do I need to require original file when overriding controller from Rails Engine?从 Rails 引擎覆盖控制器时是否需要原始文件?
【发布时间】:2009-12-01 00:44:07
【问题描述】:

我正在尝试覆盖 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 魔法可以让我避免最初的需求?

【问题讨论】:

标签: ruby-on-rails rails-engines


【解决方案1】:

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

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

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

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

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

SomeController.class_eval do

  def index
    ...
  end

end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多