Rails 3: RJS против JavaScript - PullRequest
4 голосов
/ 31 июля 2010

Я недавно начал изучать Ruby on Rails, основанный на RoR3 beta / RC.Ранее я занимался разработкой приложений с использованием других сред (например, Django), где JavaScript был написан полностью самостоятельно.

При разработке приложения с использованием RoR меня смущают два возможных способа реализации JavaScript:«чистый» (написание JavaScript и помещение его в тег <script>) и написание файлов RJS.

Какой из подходов лучше использовать и когда?Если RJS, как я могу реализовать конкретные действия, такие как onChange?

Ответы [ 2 ]

6 голосов
/ 05 сентября 2010

В рельсах вы должны использовать оба подхода для разных задач.Я тоже. Когда я хочу выполнить ajax-запрос, я использую RJS, потому что это упрощает запрос и позволяет писать более мощный и гибкий ответ в файле .rjs с гораздо меньшим количеством кода.Например, в нем можно использовать партиалы и получить доступ к переменным ruby.Когда я хотел бы сделать страницу более динамичной, я использую простой javascript, включающий ее с javascript_include_tag.

UPD. Этот подход работает в rails 3 аналогичным образом.Возможно использовать его с JQuery и HAML.UJS в Rails 3 даже упрощает это.Единственное, что вам нужно сделать, это использовать jquery-ujs , если вы предпочитаете Jquery вместо Prototype и правильно называете файл, например create.js.haml.Например, при таком подходе можно использовать проверка на стороне сервера в запросах AJAX.

4 голосов
/ 12 января 2011

В рельсах 3 правильный способ сделать это - чистый JS.RJS слишком строг, и вы должны использовать Prototype или взломать каким-либо образом, чтобы использовать его с jQuery.Rails 3 также продвигает ненавязчивый JavaScript.При запросах AJAX вы должны возвращать чистый Javascript, встроенный в ERB, вместо использования RJS.

К сожалению, поскольку это изменение требует больших переделок для более старых проектов, в которых использовался RJS, некоторые люди оставят его.

RJS фактически обесценивается в рельсах 3, вам нужен плагин, чтобы даже работать с ним, поэтому, если вы начинаете сейчас и вам достаточно повезло, чтобы уже начинать с рельсов 3, идите по рельсам в 3 направлении.

Вот хороший пример нового способа UJS: http://railscasts.com/episodes/205-unobtrusive-javascript

Удачи

...