我发现了hanami那些天(hanami 1.3),我正在完善我所做的测试项目,我找不到从视图或模板访问当前页面url/路径的方法(这个想法是处理导航链接的可视化状态,你可能已经猜到了)。
我试过猜助手的名字(routes.current_page
,routes.current_url
,routes.current
…),但我没那么幸运。我检查了routing helpers documentation,浏览了hanami/hanami和hanami/router存储库,但没有找到我要找的东西。
我是错过了什么还是这根本不是内置的?
最佳答案
这就是我现在所做的。我遵循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
路径添加到applicationload_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'
]
三。确保我的新助手可用于每个视图
…使用
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)
帮助程序,并对它们执行所需的操作。我不知道这是不是最直接的方法,但至少是可行的。