# routes.rb
match "/:space_type/:id", :to => "spaces#show", :as => :space_type
# linking
link_to "My space", space_type_path(@space.space_type, @space.id)
, который будет генерировать эти URL: /bars/123
, /clubs/1
... любой space_type
у вас есть
И похоже, что STI Wold делают эту работу немного чище;)
UPD
Также вы можете добавить ограничения, чтобы предотвратить некоторые столкновения:
match "/:space_type/:id", :to => "spaces#show", :as => :space_type, :constraints => { :space_type => /bars|clubs|hotels/ }
И да - это хорошая идея, чтобы поставить этот маршрут в нижней части всех других маршрутов
Вы также можете обернуть его в качестве помощника (и переписать по умолчанию space_url
):
module SpacesHelper
def mod_space_url(space, *attrs)
# I don't know if you need to pluralize your space_type: space.space_type.pluralize
space_type_url(space.space_type, space.id, attrs)
end
end