Я получаю странный вывод при использовании следующей настройки маршрутизации:
resources :warranty_types do
resources :decisions
end
resource :warranty_review, :only => [] do
resources :decisions
end
У меня есть много типов Гарантия_, но только один вид гарантии (таким образом, единственная декларация маршрута). Решения полиморфно связаны с обоими. У меня есть только один контроллер решений и один частичный _form.html.haml для отображения формы решения.
Это код вида:
= simple_form_for @decision, :url => [@decision_tree_owner, @decision.becomes(Decision)] do |form|
URL-адрес гарантированного типа выглядит следующим образом (для нового решения):
/warranty_types/2/decisions
тогда как URL-адрес гарантированного_просмотра выглядит так:
/admin/warranty_review/decisions.1
Я думаю, потому что id гарантии_review некуда деваться, он просто добавляется в конец как расширение.
Может кто-нибудь объяснить, что здесь происходит и как я могу это исправить?
Я могу обойти это, пытаясь определить класс Guarantion_review и заменив @decision_tree_owner на: гарантированный_результат, и это генерирует правильный URL, но это грязно. Я бы подумал, что маршрутизация будет достаточно умной, чтобы понять, что Guarantee_review является единственным ресурсом и, следовательно, отбросить идентификатор из URL.
Кстати, это Rails 3:)