Rails 2.0.2 中的 ApplicationController 方法不使用引擎覆盖插件方法

Posted

技术标签:

【中文标题】Rails 2.0.2 中的 ApplicationController 方法不使用引擎覆盖插件方法【英文标题】:ApplicationController methods in Rails 2.0.2 not overriding plugin methods using Engines 【发布时间】:2010-09-21 05:48:29 【问题描述】:

我正在尝试在我的项目中使用 Savage Beast 2 插件。此插件需要使用 Engines 插件。我的项目在 Rails 2.0.2 上。

里面有一些方法

/main_app/vendor/plugins/savage_beast/lib/authentication_system.rb 

我的意思是覆盖

/main_app/app/controllers/application.rb

插件中的视图(即使通过在主应用程序中创建类似视图来覆盖)看不到 application.rb 中被覆盖的方法,而是访问

中的方法
/main_app/vendor/plugins/savage_beast/lib/authentication_system.rb

我的 application.rb 的开头是这样的:

class ApplicationController < ActionController::Base
  helper :all # include all helpers, all the time
  include SavageBeast::AuthenticationSystem

我还在 /config/environment.rb 中添加了正确的行 -

require File.join(File.dirname(__FILE__), '../vendor/plugins/engines/boot')

在 require ... 引导行之后。

我现在不知道该怎么做。任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

如果我在 ApplicationHelper 中重写这些方法,显然它会起作用!!! 为什么?我不知道! 因此,不要在 application.rb 中覆盖这些方法 我在 application_helper.rb 中这样做了

现在它工作正常! 我必须在 application_helper.rb 中包含我自己的身份验证模块,以支持我覆盖的方法。

【讨论】:

以上是关于Rails 2.0.2 中的 ApplicationController 方法不使用引擎覆盖插件方法的主要内容,如果未能解决你的问题,请参考以下文章

在 Rails 4 中如何使用 attr_accessible?

如何从 Ruby 1.9.2 降级到 Ruby 1.8.7 以运行 Rails 2.0.2

如何使用Rails在HTML和JSON中进行响应?

请建议适当的附件插件/宝石用于 Rails 2.0.2 和 Ruby 1.8.7

Rails 5 和 select2 错误,select2 不是函数

带有回形针 Docx content_type 的 Rails 以 application/zip 的形式返回