Я немного подправил ответ Коди, чтобы придумать:
map.place '/places/*id', :controller => 'places', :action => 'show'
map.connect '/places/*id.:format', :controller => 'places', :action => 'show'
Используя map.place вместо map.connect, Rails знает, с каким ресурсом мы имеем дело, и правильно генерировал помощников place_url
, place_path
и т. Д.
Теперь 2-я строка должна работать, но не работает благодаря вышеприведенной ошибке, поэтому вот обходной путь для place_controller.rb, который вручную разбивает идентификатор и устанавливает формат, по умолчанию XML:
id, suffix = params[:id].join('/').split('.')
params[:format] = suffix ? suffix : "xml"