Давайте поговорим о том, что такое RJS, прежде чем понять, является ли это злом.
RJS применяет тот же уровень абстракции к высокофункциональным библиотекам Javascript, который ActiveRecord предоставляет для SQL. Однако покрытие RJS для библиотек Javascript далеко не так полно, как покрытие ActiveRecord адаптеров SQL.
Rails поставляется с поддержкой RJS только для Prototype / Script.aculo.us. Однако есть плагины, доступные или находящиеся в разработке, для поддержки других библиотек Javascript. Например, JRails переписывает помощники на основе прототипа для работы с jQuery. Подобные плагины существуют для mootools и, вероятно, Dojo.
Люди, которые считают RJS злом, - это, как правило, те, кому не нравится, когда он создает код Прототипа, или те, кто считает, что с помощью необработанного Javascript можно добиться чего-то проще.
RJS не совершенен, так же как ActiveRecord не совершенен, время от времени вам приходится переходить к написанию необработанного Javascript или SQL, чтобы выполнить свою работу. Как и в случае с ActiveRecord, чем удобнее вы пользуетесь расширенными опциями, тем больше вы можете достичь без написания исходного кода.
Одна из замечательных особенностей RJS заключается в том, что они, по сути, являются представлениями, создающими Javascript. Очень легко извлечь RJS в партиалы, которые могут быть включены по мере необходимости, либо как ответы на контроллеры, либо как часть пользовательских функций Javascript, включенных в страницу. Это делает код намного более СУХИМ, что упрощает его обслуживание.
Лично я часто использую RJS. Я считаю, что это идеальный способ прикоснуться к множеству элементов DOM одновременно. Это дает двойной бонус, позволяющий мне создавать сайты, богатые AJAX, без написания большого количества Javascript. Потом снова я ненавижу писать Javascript.