我正在使用ActiveAdmin gem。我想为菜单添加一个注销链接。所以在ActiveAdmin的配置文件中我写道:
config.logout_link_path = :destroy_admin_user_session_path
在我的application_controller.rb
我添加了一个方法:
def destroy_admin_user_session_path
session[:current_admin] = nil
return "/"
end
回到ActiveAdmin配置,我添加了菜单项:
config.namespace :admin do |admin|
admin.build_menu :defaut do |menu|
admin.add_logout_button_to_menu menu, html_options: {target: :blank}
end
end
然后启动我的应用程序但是当我访问管理页面时出现内部错误:
undefined method `destroy_admin_user_session_path' for " <ul class=\"header-item tabs\" id=\"utility_nav\"></ul>\n":ActiveAdmin::Views::TabbedNavigation
似乎符号:destroy_admin_user_session_path
未发送到我的ApplicationController
,但显示为<ul class=\"header-item tabs\" id=\"utility_nav\"></ul>\n
。
为什么会发生这种情况以及如何解决?
答案 0 :(得分:2)
我怀疑(没有足够的代码可以告诉你)你想要的是 view 助手,而不是控制器方法。这将允许您在视图中使用该方法,这可能是它报告为错误源的HTML的位置。
将destroy_admin_user_session_path
方法移至app/helpers/application_helper.rb
,然后重试。
如果您确实希望将方法保留在控制器中,您可以选择将helper_method :destroy_admin_user_session_path
添加到ApplicationController
类的顶部,这会将方法转换为跨控制器和视图可用的辅助方法。