Ханами: доступ к URL текущей страницы из представлений или шаблонов
В те дни я открываю для себя Hanami (Hanami 1.3), я готовлю тестовый проект, над которым я работал, и не могу найти способ получить доступ к URL / пути к текущей странице из представления или шаблона (идея обрабатывает визуальное состояние навигационных ссылок, как вы уже догадались).
Я пытался угадать имена помощников (routes.current_page
, routes.current_url
, routes.current
...) но мне не повезло. Я проверил документацию помощников по маршрутизации, прошел через репозитории hanami / hanami и hanami / router, но не нашел то, что искал.
Я что-то пропустил или это просто не встроенный?
1 ответ
Вот что я в итоге сделал, на данный момент. Я следовал документации 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.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)
помощники, и делать то, что мне нужно с ними делать. Я не знаю, если это самый простой способ, но, по крайней мере, он работает.