Ханами: доступ к URL текущей страницы из представлений или шаблонов - PullRequest
1 голос
/ 01 мая 2019

В те дни я открываю для себя Hanami (Hanami 1.3), я готовлю тестовый проект, над которым работал, и не могу найти способ доступа к URL / пути к текущей странице из представления или шаблон (идея, как вы уже догадались, обрабатывает визуальное состояние навигационных ссылок).

Я пытался угадать имена помощников (routes.current_page, routes.current_url, routes.current ...), но мне не повезло. Я проверил документацию помощников по маршрутизации , полученную через hanami / hanami и hanami / router , но не нашел то, что искал.

Я что-то пропустил или это просто не встроено?

1 Ответ

4 голосов
/ 01 мая 2019

Вот что я в итоге сделал на данный момент.Я следовал документации на ханами , определил пользовательский помощник и сделал его доступным для всех моих представлений, например:

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.prepare в application.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_path и current_page?(path) помощникам и делать то, что мне нужноделать с ними.Я не знаю, самый ли это простой способ, но, по крайней мере, он работает.

...