Это похоже на STI и form_for проблемы , но ответ, который там дается, не подходит для рельсов 3 и выдает предупреждение об устаревании. Однако, если я попытаюсь использовать новый синтаксис, я получу очень запутанный результат. Вот проблема.
Event_enquiry - это своего рода запрос, и в старом синтаксисе я бы сделал
<%= form_for( :event_enquiry, @enquiry, :remote => true, :url=>{:id=>@enquiry.id,:action=>:build_provider_versions}
Это создает ожидаемый путь
/ event_enquiries / 1 / build_provider_versions
и в журнале я вижу
Запуск POST "/ event_enquiries / 1 / build_provider_versions" для 127.0.0.1 в 2010-12-22 22:00:11 + 0000
но это выдает предупреждение об устаревании
DEPRECATION WARNING: Using form_for(:name, @resource) is deprecated. Please use form_for(@resource, :as => :name) instead.
НО, хотя новый синтаксис
<%= form_for( @enquiry, :as => :event_enquiry,:remote => true, :url=>{:id=>@enquiry.id,:action=>:build_provider_versions}
появляется, чтобы сгенерировать тот же маршрут, и в журнале я получаю точно такое же сообщение
Запущено POST "/ event_enquiries / 1 / build_provider_versions" для 127.0.0.1 в 2010-12-22 22:01:58 +0000
маршрут явно не существует!
ActionController :: RoutingError (Нет подходящих маршрутов "/ event_enquiries / 1 / build_provider_versions"):
Я проходил туда-сюда и не мог видеть, что происходит. Кто-нибудь знает, что происходит?
Очевидно, что сейчас я рад вернуться к старому синтаксису, но у меня неприятное ощущение, что здесь что-то не работает ... или я просто глуп?