ActiveAdmin设置config.logout_link_path导致未定义的方法错误

时间:2017-04-26 14:42:14

标签: ruby-on-rails activeadmin

我正在使用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

为什么会发生这种情况以及如何解决?

1 个答案:

答案 0 :(得分:2)

怀疑(没有足够的代码可以告诉你)你想要的是 view 助手,而不是控制器方法。这将允许您在视图中使用该方法,这可能是它报告为错误源的HTML的位置。

destroy_admin_user_session_path方法移至app/helpers/application_helper.rb,然后重试。

如果您确实希望将方法保留在控制器中,您可以选择将helper_method :destroy_admin_user_session_path添加到ApplicationController类的顶部,这会将方法转换为跨控制器和视图可用的辅助方法。