gpt4 book ai didi

ruby-on-rails - Rails 3.2.3 命名空间 Controller 被具有相同名称的全局 Controller 覆盖

转载 作者:数据小太阳 更新时间:2023-10-29 06:57:59 24 4
gpt4 key购买 nike

当首先加载全局应用程序 Controller 时,命名空间应用程序 Controller 在加载该命名空间内的页面时不会加载。应用程序 Controller 如下所示:

class ApplicationController < ActionController::Base
protect_from_forgery
end

命名空间应用程序 Controller 如下所示:

class Admin::ApplicationController < ApplicationController

def authenticate_admin!
if current_admin.nil?
redirect_to new_admin_session_url
end
end

private

def current_admin
@current_admin ||= Admin.find(session[:admin_id]) if session[:admin_id]
end

helper_method :current_admin
end

当我们使用 before_filter "authenticate_admin!"时像这样:

class Admin::AssetsController < Admin::ApplicationController
before_filter :authenticate_admin!
end

抛出“Admin::AssetsController#new 中的 NoMethodError”。只有当我们在命名空间路由之前访问全局路由时才会发生这种情况。如果服务器重新启动并且首先加载命名空间路由,则一切正常。

最佳答案

发生这种情况是因为您也碰巧有一个与您的命名空间同名的 Admin 模型(一个类)。

This Google 群组帖子很好地解释了到底发生了什么。

要解决此问题,我会将模型重命名为 AdminUser,或者如果这不可能,重命名命名空间也可以解决此问题。

关于ruby-on-rails - Rails 3.2.3 命名空间 Controller 被具有相同名称的全局 Controller 覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10902023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com