Это похоже на проблему 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, и в журнале я вижу Started 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}
кажется, генерирует тот же маршрут, и в журнале я получаю точно такое же сообщение Started 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"):
Я был взад и вперед через это и не могу видеть, что происходит. Кто-нибудь знает, что происходит?
Очевидно, я рад вернуться к старому синтаксису на данный момент, но у меня неприятное чувство, что здесь что-то не так... или я просто дурак?