2009-08-28 2 views
2

У меня есть комментарий, как полиморфная модель.Полиморфные маршруты в Rails - во взглядах

Он прикреплен к Post, обзор и т.д.

Я также действие в CommentsController, называется test.

У меня есть настройка маршрутов, поэтому test_post_comment_path работает (для вызова действия test в Контроллере комментариев).

Проблема заключается в том, что на моем частичном изображении я хочу, чтобы этот маршрут мог меняться в зависимости от текущего действия, т.е. это test_post_comment_path, когда на почте и test_review_comment_path, когда на обзор.

ответ

-2

я решил просто использовать, если заявление в представлении, на основании, если текущее действие присутствует, например, если @post или если @review

+1

Посмотрите на помощники полиморфного пути. http://api.rubyonrails.org/classes/ActionController/PolymorphicRoutes.html – vise

1

Просто используйте два разных пути?

Что я имею в виду: вы не хотите вводить столько логики внутри маршрутов.

Если маршруты пытаются сделать что-то большее, чем маршрутизацию, в первый раз, когда что-то пойдет не так, у вас будут серьезные проблемы.

В вашем частичном представлении логика создания конкретных ссылок или других материалов комментария html должна идти в помощнике.

+0

Я хочу, чтобы логика изменилась в самом представлении - я просто не уверен, как – Elliot

0

Что-то вроде этого: (в вашем частичном виде)

@commentable.each |commentable| 
    test_#{commentable.class.to_s.downcase}_comment_path 
end 

если это «пост», то он будет генерировать «test_post_comment_path», если отзыв, он будет генерировать test_review_comment_path

5

правильный способ сделать это с polymorphic_url ...

+0

удивительный, я просто искал это =) –

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