首页 > 解决方案 > Hanami:从视图或模板访问当前页面 URL

问题描述

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

我试图猜测助手的名字(routes.current_page, routes.current_url, routes.current...),但我并不走运。我检查了路由助手文档,通过了hanami/hanamihanami/router存储库,但没有找到我想要的东西。

我错过了什么还是这根本不是内置的?

标签: rubyhanamihanami-router

解决方案


这就是我最终要做的,暂时。我按照hanami 文档定义了一个自定义助手,并使其可用于我的所有视图,如下所示:

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应用程序变量的路径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. 确保我的新助手可用于每个视图

..通过使用view.prepareapplication.rb

  # 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)助手,并用它们做我需要做的事情。我不知道这是否是最直接的方法,但至少它有效。


推荐阅读