【问题标题】:Hanami : access current page URL from views or templatesHanami:从视图或模板访问当前页面 URL
【发布时间】:2019-09-19 22:22:56
【问题描述】:

那些日子我正在发现 Hanami(Hanami 1.3),我正在完善我从事的测试项目,但我找不到从视图中访问当前页面 url/路径的方法或模板(这个想法是处理导航链接的视觉状态,您可能已经猜到了)。

我试图猜测助手的名字(routes.current_pageroutes.current_urlroutes.current...)但我运气不好。我检查了routing helpers documentation,通过了hanami/hanamihanami/router 存储库,但没有找到我想要的东西。

我是否遗漏了什么,或者这根本不是内置的?

【问题讨论】:

    标签: ruby hanami hanami-router


    【解决方案1】:

    这就是我暂时要做的事情。我按照hanami documentation 定义了一个自定义助手,并将其提供给我的所有视图,如下所示:

    1.创建Web::Helpers::PathHelper 模块

    在那里我可以访问参数和请求路径:

    # apps/web/helpers/path_helper.rb
    module Web
      module Helpers
        module PathHelper
          private
    
          def current_path
            params.env['REQUEST_PATH']
          end
    
          def current_page?(path)
            current_path == path
          end
        end
      end
    end
    

    2。确保应用程序加载了 helpers 目录

    helpers 路径添加到应用程序load_paths 变量中,以便在应用程序加载代码时加载我的助手。

      # apps/web/application.rb
      # Relative load paths where this application will recursively load the
      # code.
      #
      # When you add new directories, remember to add them here.
      #
      load_paths << [
        'helpers',
        'controllers',
        'views'
      ]
    

    3。确保我的新助手可用于每个视图

    ..通过使用application.rb 中的view.prepare 块:

      # apps/web/application.rb
      # Configure the code that will yield each time Web::View is included
      # This is useful for sharing common functionality
      #
      # See: http://www.rubydoc.info/gems/hanami-view#Configuration
      view.prepare do
        include Hanami::Helpers
        include Web::Assets::Helpers
        include Web::Helpers::PathHelper
      end
    

    4.现在我可以在每个视图中使用我的助手了!

    现在,通过我的模板或视图对象,我可以访问我自己的 current_pathcurrent_page?(path) 助手,并使用它们做我需要做的事情。我不知道这是否是最直接的方法,但至少它有效。

    【讨论】:

    • 你做得很好!你的例子是向社区提问、阅读文档、亲自动手、实施出色的解决方案并与社区分享的完美示例。 ???
    • 谢谢@LucaGuidi。希望它可以帮助社区。也许它甚至可以成为 PR 或 hanami 扩展的机会。我对框架、代码库等还不够熟悉,但这是一个想法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    相关资源
    最近更新 更多