【问题标题】:How to add a link back to the application in ActiveAdmin?如何在 ActiveAdmin 中添加回应用程序的链接?
【发布时间】:2011-08-26 03:33:52
【问题描述】:

我需要在 ActiveAdmin 页面中添加一些指向应用程序某些页面的链接。我可以使用侧边栏来做到这一点,但我必须为我的每个资源重复代码。是否有向标题添加自定义链接?或者为所有资源定义一个侧边栏?

【问题讨论】:

    标签: ruby-on-rails activeadmin


    【解决方案1】:

    我也不想忽略在 initializers/active_admin.rb 中设置 config.site_title_link。

    我很确定它需要一个代表您应用程序中路由名称的符号,例如:

    config.site_title_link = :root
    

    会将站点标题链接到应用程序的 root_path。

    【讨论】:

    • 谢谢!使用的是不支持可配置标题链接的旧版 ActiveAdmin。已升级到最新版本并立即进行配置。
    • 是的,它也支持符号
    • 很高兴听到它对您有用 - 显然,如果您在标题中需要多个链接,这并不能实现。但这似乎是一个很好的开始!
    【解决方案2】:

    谢谢@phoet!通过覆盖 HeaderRenderer 来实现它:

      module ActiveAdmin
        module Views
          class HeaderRenderer
            def to_html
              title + global_navigation + application_link + utility_navigation
            end
    
            def application_link
              link_to('Back to Application', root_url)
            end
          end
        end
      end
    

    【讨论】:

    • 这个必须放在特别的地方吗?例如:app/admin/views/header_renderer.rb?
    • @mbillard:您可以将它放在您定义所有页面的同一目录中的任何文件中。此代码将覆盖内部 ActiveAdmin 类中的方法。
    • 没错,或者更好的放置位置是放在 config/initializers 目录下的单独文件(可能称为 active_admin_initializer.rb)中。 “config/initializers”目录下的所有文件都会在启动时被 Rails 加载。
    • 这似乎不适用于 ActiveAdmin >= 0.5.0,这个问题有一个适用的答案,但仍然不是很完美。 stackoverflow.com/questions/9620165/…
    【解决方案3】:

    我认为没有内置方法可以做到这一点,但您可以覆盖 TabsRenderer (2.2) / TabbedNavigation (3.0) 中的渲染逻辑:

      def render_menu(menu)
        content_tag :ul, :id => @options[:id] do
          menu.items.collect do |item|
            render_item(item)
          end.join.<<('your_custom_stuff').html_safe
        end
      end
    

    【讨论】:

      猜你喜欢
      • 2011-05-23
      • 1970-01-01
      • 2020-03-11
      • 2020-09-17
      • 2023-03-22
      • 1970-01-01
      • 2013-11-07
      • 1970-01-01
      • 2021-06-12
      相关资源
      最近更新 更多