gpt4 book ai didi

ruby-on-rails - 将 Rails 引擎连接到全局布局中

转载 作者:行者123 更新时间:2023-12-02 04:06:02 26 4
gpt4 key购买 nike

我目前正在编写一个模块化的 Rails 应用程序,其中每个功能都在 Rails 引擎中。我已经设置了我的第一个引擎,到目前为止一切正常。现在我想知道将引擎连接到当前在 app/views/layouts/application.html.haml 中呈现的全局导航的最佳方式是什么? , 像这样:

%nav#main-nav
%ul
%li
= link_to "Users", users_path, :class => "no-submenu settings"
%ul
%li ...

我找到的最接近的是 HookListenerspree ,它使用 deface gem。不幸的是,deface 仅适用于 html/erb 输出,因为它使用 nokogiri 解析 DOM,这无论如何都不是最好的主意。

最佳答案

为了记录,我已经这样解决了:

  • 将基础应用程序也移动到引擎/gem 以使其易于使用
  • 添加 Navigation类(class)
  • MyEngine 注册到此类
  • core/lib/navigation.rb :
    class Navigation

    @registered_blocks = {}

    class << self
    def register(name, &block)
    @registered_blocks[name] ||= block
    end

    def bind(root)
    @registered_blocks.each do |name, block|
    block.call(root)
    end
    end
    end
    end
    myext/lib/myext/engine.rb :
    Navigation.register :myext do |root|
    root.item :mylink, "My Link", "/"
    end
    config/navigation.rb (对于 simple-navigation ):
    navigation.items do |root|
    Navigation.bind(root)
    end

    关于ruby-on-rails - 将 Rails 引擎连接到全局布局中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7555440/

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