2014-01-05 2 views
0

Это мой маршрутRails: путь маршрута на основе атрибутов объекта

resources :programs 

Моя модель Программа , которые имеют один атрибут типа, который может быть равен «фильм», или «tv_show» ,

  • тип = Movie
  • тип = TV Show

Я бы, что если программа является фильм, URL-адрес будет:

http://example.com/movie/12 

иначе

http://example.com/tv_show/12 

Возможно ли это?

Я нашел это, но я не знаю, как сделать динамические (переключен атрибуты объекта)

resources :programs, path: 'tv_show' 

Я хочу, чтобы избежать редактирования каждой program_url (р), я ищу для smart way using routes.rb

ответ

2

Rails polymorphic_path может помочь.

movie = Movie.find(12) 
polymorphic_path([movie]) #will give http://example.com/movie/12 
tv_show = TvShow.find(12) 
polymorphic_path([tv_show]) #will give http://example.com/tv_show/12 

Вы можете попробовать это в консоли рельсы, как

app.polymorphic_path ([фильм])

+0

Спасибо. Но у меня есть только одна модель, то есть программа (вопрос обновлен) – sparkle

+0

Возможно, вы можете определить отдельные маршруты как для фильма, так и для tv_show как «ресурсы: фильмы, контроллеры: программы» ресурсы: tv_show, controller: programs' В ваших взглядах вы может затем вызывать разные пути на основе типа. – deepthi

Смежные вопросы