Radiant CMSを使用する Rails サイトに取り組んでおり、このリンクの最初の方法に従ってステートフル ナビゲーションを構築しています。
各ナビゲーション リンクのアクティブな状態を表示するかどうかを判断するために、正規表現で URL を照合しています。/communications/例として、Radiant URL 用と用の 2 つのサンプル ナビゲーション要素を次に示します/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プレス リリースの場合、ナビゲーション アイテムは適切に「選択された」クラスを取得し、コミュニケーション ナビゲーション アイテムは選択されていません。ただし、通信の正規表現は正しく機能していないようです。URL が/communications/どちらの要素にも「選択された」クラスがない場合 (したがって、正規表現は一致しないに違いありません)。しかし、私はテストしました
>> "/communications/".match(/communications\/$/)
=> #<MatchData:0x333a4>
ご覧のとおり、正規表現は正常に機能しているようです。何が原因でしょうか?
TL;DR : Ruby シェルでは"/communications/"一致しますが、Radiant ナビゲーションのコンテキストでは一致しません。/communications\/$/何が起きてる?