ActiveAdmin 设置 config.logout_link_path 导致未定义的方法错误
ActiveAdmin setting config.logout_link_path cause undefined method error
我正在使用 ActiveAdmin gem。我想为菜单添加注销 link。所以在 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
。
为什么会发生这种情况以及如何解决?
我 怀疑(没有足够的代码可以说明)您想要的是 view 助手,而不是控制器方法。这将允许您在您的视图中使用该方法,这可能是 HTML 它报告为错误源的地方。
将您的 destroy_admin_user_session_path
方法移至 app/helpers/application_helper.rb
并重试。
如果你真的想把你的方法保留在控制器中,你可以选择在 ApplicationController
class 的顶部添加 helper_method :destroy_admin_user_session_path
,这会将方法变成辅助方法跨控制器和视图可用。
我正在使用 ActiveAdmin gem。我想为菜单添加注销 link。所以在 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
。
为什么会发生这种情况以及如何解决?
我 怀疑(没有足够的代码可以说明)您想要的是 view 助手,而不是控制器方法。这将允许您在您的视图中使用该方法,这可能是 HTML 它报告为错误源的地方。
将您的 destroy_admin_user_session_path
方法移至 app/helpers/application_helper.rb
并重试。
如果你真的想把你的方法保留在控制器中,你可以选择在 ApplicationController
class 的顶部添加 helper_method :destroy_admin_user_session_path
,这会将方法变成辅助方法跨控制器和视图可用。