2010-11-23 2 views
0

У меня есть общий частичный для индекса, где я хочу вставить некоторые ссылки. На этой ссылки я хотел бы использовать named_routes, какКак получить именованный маршрут из класса в рельсах?

link_to "Say hi",things_path(:param1=>:hello, :params2=>:there) 

, но я не знаю, если things_path является users_path, places_path или reviews_path, потому что этот частичный общий для всех контроллеров. Существует какой-либо способ получить именованный маршрут, связанный с классом или текущим контроллером. я хочу что-то вроде этого

link_to "Say hi", path_of(@current_class)(:param1=>:hello, :params2=>:there) 

ответ

0

Помощник пути, такой как cars_path, в конечном счете является просто ярлыком для настройки: controller: действие и другие параметры, такие как: id. Если вы хотите, чтобы контроллер всегда приравнивают к текущему контроллеру вы можете просто сказать

link_to «Скажи привет»,: действие => «индекс»,: param1 => Привет,: params2 =>: там

Поскольку параметр: controller опущен, он будет считаться текущим контроллером.

+0

Я знаю. Еще больше: поскольку я уже работаю с индексом, я даже могу опустить контроллер и действие, а ссылка укажет на текущее действие. Но ярлык имеет некоторый синтаксический сахар, который я люблю. И им нужно думать в будущих приложениях этого подхода к mi app. – Cibernox 2010-11-23 16:50:23

1

Есть несколько подходов к этому. Самое простое - полагаться на полиморфную маршрутизацию, такую ​​как: link_to "Say hi", @my_object. В этом случае рельсы будут смотреть на класс @my_object и его текущее состояние (new_record?) и использовать соответствующий маршрут и спокойное действие. Если предположить, что парциальное называется _foo.html.erb, то это может быть столь же просто, как

link_to 'Say hi', foo 

... который является довольно удивительным. Этот вопрос задан раньше, здесь: Polymorphic Routes in Rails - in views, но я думаю, что трудно найти ответы, не зная волшебных слов «полиморфная маршрутизация» :-)

+0

Я прочитаю эту тему. Большое спасибо! – Cibernox 2010-11-23 16:52:35