ruby - Hanami:从视图或模板访问当前页面 URL
问题描述
那些日子我正在发现 Hanami(Hanami 1.3),我正在完善我从事的测试项目,但我找不到从视图或模板访问当前页面 url/路径的方法(这个想法正在处理导航链接的视觉状态,您可能已经猜到了)。
我试图猜测助手的名字(routes.current_page
, routes.current_url
, routes.current
...),但我并不走运。我检查了路由助手文档,通过了hanami/hanami和hanami/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.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)
助手,并用它们做我需要做的事情。我不知道这是否是最直接的方法,但至少它有效。
推荐阅读
- installation - Visual Studio 2019 Project creation Issue
- python - Incorrect visualization in Python Plotly
- python - Can anyone define a recursive function to solve this problem?
- python - How to create an incremental/historical dataframe with timestamp but without duplicate in Python
- java - variable gets back to the default value when run again
- javascript - Toggle between active and inactive tabs
- jenkins - JENKINS: sending .apk file as attachment to email
- python - 为什么在 conda-build 的构建过程中将 $CONDA_PREFIX 设置为 $BUILD_PREFIX?
- javascript - 如何在 Javascript 中加载远程数据然后处理它?
- java - 局域网中的 Java 连接问题