Я не думаю, что map.root делает то, что вы хотите.
map.root выглядит как именованный маршрут, потому что это так. Но это специальный именованный маршрут для маршрутизации URL-адреса без локального пути (например: 'http://www.example.com/')., поэтому ему не нужен аргумент пути, такой как стандартные именованные маршруты.
Похоже, вы либо не знаете, что делает map.root, либо пытаетесь вставить корневое отображение в свой статический контроллер.
Если это первое, просто выберите другое имя для вашего маршрута, чтобы решить вашу проблему.
Если это позднее, все, что вам действительно нужно сделать, это передать определенное значение пути. Поместите его выше всех для статических страниц, иначе он никогда не будет совпадать.
map.root :controller => 'static', :path => "my_template.html"
Если вы пытались заставить определенный маршрут перейти на определенную статическую страницу, создание файла с таким путем, спускающимся с общедоступного, будет проходить через маршруты полностью. Так что вам даже не нужно писать маршрут. (например: http://www.example.com/whatever/static_pages
автоматически подает public/whatever/static_pages
, если он существует)
Однако, если вы хотите, чтобы этот файл содержал erb / haml / etc, вы хотите использовать метод, описанный выше, для маршрутизации запроса через ваш статический контроллер. В вопросе говорится, что он не отображается на контроллер / действие, но, создав статический контроллер, у вас есть маршрут, а теперь действие для вашего именованного маршрута. Если по какой-либо причине путь не соответствует логике вашего контроллера, вы можете использовать определенное выше действие явный_путь, чтобы обеспечить требуемый путь внутри как параметр с таким маршрутом.
map.static_page '/static_page', :controller => 'static',
:path => "my template.html"
P.S. : template_exist устарел в Rails 2.3. Поэтому вам придется определить его самостоятельно, если вы обновитесь.