Mason::Plugin::RouterSimpleを使用してページ コンポーネントのルートを指定する方法を知っています。たとえば、次の URL が与えられます。
/archives/2015/07
次のようにコンポーネントを作成できますarchives.mc
。
<%class>
route "{year:[0-9]{4}}/{month:[0-9]{2}}";
</%class>
Archives for the month of <% $.month %>/<% $.year %>
同様にnews.mc
、次の URL を処理するコンポーネントを作成できます。
/news/2012/04
それは問題ありません(そして非常にエレガントです!)が、今私が欲しいのは、次のようなURLを処理できるようにすることです:
/john/archives/2014/12
/john/news/2014/03
/peter/news/2015/09
/bill/archives/2012/06
ルートルールを次のように記述できることはわかっています。
<%class>
route "{user:[a-z]+}/archives/{year:[0-9]{4}}/{month:[0-9]{2}}", { action=> 'archives' };
route "{user:[a-z]+}/news/{year:[0-9]{4}}/{month:[0-9]{2}}", { action=> 'news' };
</%class>
ただし、リクエストは 2 つの異なるコンポーネントで処理する必要があります。リクエストを別のコンポーネントにルーティングするにはどうすればよいですか? archives.mc
コンポーネントの名前の前にユーザー名があるため、Mason では一致しnews.mc
ません。