Скажем, у меня есть приложение для рельсов с 3 моделями: Персона, Место и Вещи. Скажем, в Thing используется наследование одной таблицы, поэтому есть подклассы FancyThing и ScaryThing. Тогда есть маршруты, определенные с map.resources :people, :places, :things
. Таким образом, для FancyThings и ScaryThings нет контроллеров, ThingsController обрабатывает оба типа.
Теперь скажите, что мне нужен код, который показывает список всего, на что есть ссылки. Если у меня есть этот код на мой взгляд:
<% @items.each do |item| %>
<%= link_to item.name, item %>
<% end %>
Если предметом является Персона или Место, это прекрасно работает, polymorphic_path
заботится о создании правильного маршрута. Но если элемент FancyThing или ScaryThing, это взрывается, потому что он попытается использовать fancy_thing_path
, для которого нет маршрута. Я хочу как-то заставить его использовать thing_path
. В идеале в Thing и / или его подклассах должен быть метод, который как-то указывает, что подклассы должны использовать базовый класс для генерации маршрута. Есть ли элегантное решение для этого?