Я могу себе представить, что здесь происходит, но я думаю, что пример кода далеко от базового по ряду причин. Во-первых, вызовы для рендеринга (: template) не маршрутизируются, поскольку они на самом деле являются путями к файлам. То, что это может делать, - это извлекать предварительно отрендеренные страницы и оборачивать их в макет приложения как некое элементарное кэширование. Неясно, что генерирует эти кэшированные файлы в первую очередь.
Вам понадобятся файлы в формате:
app/views/blog/2010/10/20.html.erb
app/views/blog/2010/list.html.erb
Маршруты - это то, что делегирует входящие запросы соответствующему действию контроллера, так что, вероятно, это что-то вроде этого:
map.connect '/blog/:year/list', :controller => 'blog', :action => 'display_by_date'
map.connect '/blog/:year/:month/:day', :controller => 'blog', :action => 'display_by_date'
Что вы должны сделать вместо этого вида делегирования кеша шаблонов - это использовать механизм Rails.cache, который поддерживает множество способов сохранения частичных результатов, включая файлы, но с гораздо более разумным способом их генерации и истечения срока действия. .
Как примечание, это какой-то ужасный код форматирования. Обычно вы форматируете параметры, используя простой метод, такой как:
render(:template => "blog/%04d/%02d/%02d" % [ params[:year].to_i, params[:month].to_i, params[:day].to_i ])
Это будет дополнять нулями по мере необходимости. Это значительно надежнее, чем проверка длины вашей строки и добавление нуля, если она только одна, и преимущество в том, что она представляет собой только одну строку, которая определяет ваш формат и шаблон в одной.