Полиморфные маршруты в Rails - в представлениях - PullRequest
2 голосов
/ 28 августа 2009

У меня Комментарий как полиморфная модель.

Он прикреплен к сообщению, отзыву и т. Д.

У меня также есть действие в CommentsController, которое называется test.

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

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

Ответы [ 4 ]

5 голосов
/ 11 февраля 2010

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

1 голос
/ 28 августа 2009

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

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

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

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

0 голосов
/ 28 августа 2009

как то так: (в вашем частичном представлении)

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

если это 'post', то он сгенерирует 'test_post_comment_path', если это обзор, он сгенерирует test_review_comment_path

0 голосов
/ 28 августа 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...