中间人检查页面是否存在

时间:2015-06-24 13:24:57

标签: ruby haml middleman

我有一个这样的语言菜单(它将当前页面切换为另一种语言):

- path = current_page.path.split('/')[1..-1].join('/')
%ul{ role: 'langmenu'}
  -if I18n.locale != :en
    %li
      =link_to 'English', "/en/#{path}"
  -if I18n.locale != :sr
    %li
      =link_to 'Serbian', "/sr/#{path}"

我想仅在目标页面实际存在时显示该语言环境的链接,因为并非所有页面都有翻译。我试过sitemap.find_resource_by_path("/sr/#{path}")但它总是返回false,即使它存在。我错过了什么?

1 个答案:

答案 0 :(得分:1)

sitemap.find_resource_by_path的参数是资源路径,而不是目标网址路径。所以你必须做这样的事情:

resource_path = current_resource.path.split('/')[1..-1].join('/')
sr_resource_path = sitemap.find_resource_by_path "sr/#{resource_path}"
if sr_resource_path
  return sr_resource_path.destination_path
end