Rails - это соглашение о конфигурации. Вы должны согласиться с соглашениями, если хотите удобство, которое приносит Rails. Я настоятельно рекомендую придерживаться модели RESTful и принять то, что сейчас делает rails.
С учетом сказанного вы, вероятно, можете взломать что-нибудь вместе. Это не будет красиво, и будет больно каждый раз, когда вы захотите создать ссылку.
Так что сначала избавьтесь от
map.resources :projects, :has_many => :pages
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
потому что map.resources
- это то, что отправляет вас на URL, который вам не нужен, и два map.connect
тоже вам не помогают. Так что теперь вы должны просто иметь
map.connect ':project_id/:id', :controller => 'pages', :action => 'show'
map.connect ':id', :controller => 'projects', :action => 'show'
Тогда, когда вы захотите создать ссылку, вам придется сделать это самостоятельно. Вы хотите использовать что-то вроде этого:
<%= link_to 'Blah', :project_id => @project, :id => @project.pages.first %>
или что-то в этом роде. Я не знаю точно, как именно вы собираетесь указать маршрут, вам, вероятно, придется изменить символы: project_id и: id.
Как я и сказал, вы не хотите идти по этому маршруту, если вам не нужно. Придерживайтесь конвенций как можно больше, потому что это сделает вашу жизнь намного проще.