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 2.0.2 和 Ruby 1.8.7