Лучшая практика - СУХОЕ нарушение Рельсов <-> JavaScript - PullRequest
2 голосов
/ 24 марта 2012

Я внедрил систему звездного рейтинга для веб-проекта.

Количество звездочек рассчитывается в бэкэнде рельсов и отображается с видом. Теперь я также реализовал динамический рейтинг через ajax. Таким образом мне нужно динамически обновлять рейтинг звезды.

Чтобы добиться этого, я просто продублировал код rails и повторно внедрил его в JavaScript. Хотя это решение работает, я не очень доволен им, потому что оно кажется грубым нарушением принципа СУХОЙ.

Какая лучшая практика в этом вопросе? Рассчитать все звездные рейтинги с помощью JavaScript?

Я рад возможному решению.

Ответы [ 3 ]

2 голосов
/ 24 марта 2012

Вы можете сделать запрос на получение AJAX для действия, которое вычисляет этот рейтинг.В этом действии вы могли видеть, был ли запрос AJAX, а затем просто возвращать вычисленное значение вместо рендеринга связанного представления.

Я предполагаю, что вы знакомы с рендерингом JSON с respond_to иrequest.xhr? методы и пр.

1 голос
/ 24 марта 2012

Если вы уже выполняете Ajax-вызов («Я также реализовал динамический рейтинг через ajax»), почему бы просто не выполнить вычисления перед отправкой ответа и добавить результат в ответ?

0 голосов
/ 27 марта 2012

Я решил использовать следующее решение:

  • вычислить рейтинг в бэкэнде рельсов (количество звездочек заполнено и пусто)
  • написать частичное представление для рендерингаоценка звезды
  • включает частичное в "нормальные" представления
  • возвращает частичное в качестве ответа ajax для функции оценки, текущий рейтинг заменяется ответом через jQuery

Я думаю, что могу игнорировать небольшие накладные расходы html, которые есть у небольшого частичного - это проще, чем возвращать Json и форматировать его с помощью JavaScript.

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