Я работаю на сайте Rails, который использует Radiant CMS и строю навигацию с отслеживанием состояния в соответствии с первым методом в по этой ссылке .
Я сопоставляю URL-адрес в регулярных выражениях, чтобы определить, показывать или нет активное состояние каждой навигационной ссылки. Например, вот два примера элементов навигации: один для Radiant URL /communications/
и один для /communications/press_releases/
:
<r:if_url matches="/communications\/$/"><li class="bottom-border selected">Communications</li></r:if_url>
<r:unless_url matches="/communications\/$/"><li class="bottom-border"><a href="/communications">Communications</a></li></r:unless_url>
<r:if_url matches="/communications\/press_releases/"><li class="bottom-border selected">Press Releases</li></r:if_url>
<r:unless_url matches="/communications\/press_releases/"><li class="bottom-border"><a href="/communications/press_releases">Press Releases</a></li></r:unless_url>
На странице «Пресс-релизы» все работает нормально, то есть, когда URL-адрес равен /communications/press_releases
, элемент навигации «Пресс-релизы» соответствующим образом получает класс «выбранный», а элемент навигации «Связь» не выбран. Однако регулярное выражение Communications, похоже, не работает должным образом, например, когда URL равен /communications/
, ни один из элементов не имеет класса selected (поэтому регулярное выражение должно не соответствовать). Тем не менее, я проверил
>> "/communications/".match(/communications\/$/)
=> #<MatchData:0x333a4>
в IRB, и, как вы можете видеть, регулярное выражение работает нормально. Что может быть причиной этого?
TL; DR : "/communications/"
соответствует /communications\/$/
в оболочке Ruby, но не в контексте навигации Radiant. Что здесь происходит?