Rails 3.0 beta и JS Helpers с jQuery - PullRequest
       38

Rails 3.0 beta и JS Helpers с jQuery

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

В примечаниях к выпуску бета-версии Rails 3.0 говорится:

«Ненавязчивые помощники JavaScript с драйверами для Prototype, jQuery»

Так как мне настроить Rails 3 для использования тогда jQuery? Он по-прежнему загружает все библиотеки прототипов по умолчанию.

Я понял, что Rails 3 имеет встроенную функциональность, похожую на плагин jRails, но, возможно, я неправильно понимаю:)

Кроме того, в качестве дополнительного вопроса, если я использую Prototype, есть ли способ заставить Rails загружать минимизированные версии, а еще лучше - один объединенный JS-файл для сокращения http-запросов?

Спасибо.

Ответы [ 6 ]

2 голосов
/ 12 февраля 2010

Когда вы создаете приложение Rails 3, просто передайте параметр -J:

$ rails app_name -J

Это будет пропущено, включая библиотеки прототипов. Теперь все, что вам нужно сделать, это поместить последний файл jquery.js в каталог public/javascripts. После этого вам также понадобится jQuery-версия файла rails.js. Вы можете получить это здесь:

http://github.com/rails/jquery-ujs/blob/master/src/rails.js

РЕДАКТИРОВАТЬ: вам необходимо включить эти файлы в верхней части макетов, чтобы получить функциональность. Вы можете сделать это:

<%= javascript_include_tag "jquery", "rails" %>

Надеюсь, это поможет!

1 голос
/ 13 февраля 2010

Оформить Google Closure

Может превратить несколько файлов javascript в один сжатый файл js. Он даже может выяснить, какие части библиотеки вы не используете, а также удалить их.

1 голос
/ 12 февраля 2010

Ненавязчивый JS относится не к методам PrototypeHelper, а к удаленным формам и ссылкам и тому подобному. Концепция заключается в том, что вы включаете :remote => true в ваш form_for или все вспомогательные методы, которые его поддерживают, а затем драйвер с именем rails.js будет искать эти пульты, перехватывать события submit или click и отправлять их через xhr. .

Чтобы использовать jquery, вам просто нужно заменить прототип драйвера ujs (который поставляется с рельсами) драйвером jquery ujs, который был извлечен в его собственный репозиторий незадолго до выпуска бета-версии rails 3. Вы можете найти это здесь .

0 голосов
/ 12 февраля 2010

Вы можете посмотреть эту статью: http://flow.handle.it/past/2010/2/9/jquery_in_rails/. В ней объясняется процесс работы с ненавязчивым JS и jQuery.

Надеюсь, это поможет.

0 голосов
/ 12 февраля 2010

Я также работаю над этим, пытаясь конвертировать мой старый ajax с рельсами 3.

Из того, что я могу сказать, они переместились в структуру, которая добавляет data-remote=true, и когда вы добавляете :remote => true к чему-то вроде link_to, который должен заменить link_to_remote в рельсах 3, так что больше нет методы onclick, вызывающие методы Ajax.

Итак, как же работает Ajax в Rails 3? Ну, у вас должны быть методы javascript, которые отслеживают, когда вы щелкаете ссылки, которые имеют свойство data-remote=true и что-то с ним делают, но на самом деле не включают их в Rails (насколько я могу судить), это независимость от библиотеки поскольку вы можете написать эти методы для отслеживания кликов в прототипе, jquery, написать их самостоятельно или что-то еще.

Я нашел javascript на github для начала, который будет следить за этими событиями:

В прототип

В JQuery

Я думаю, что для того, чтобы на самом деле загрузить jquery вместо прототипа, вам нужно просто загрузить его в public/javascripts и вручную указать jquery, использовать javascript_include_tag :all или переопределить javascript_include_tag (не рекомендуется)

0 голосов
/ 12 февраля 2010

Я не знаю о Rails 3, но постараюсь ответить на бонусный вопрос.

Вы можете поместить все, что хотите, в каталог public / javascript. По умолчанию он загружает файлы: prototype.js, effect.js, dragdrop.js и controls.js ( подробнее ) Если вы хотите сжать все файлы js и отправить его в один файл, вы можете использовать этот плагин .

Конечно, это не будет работать для динамически генерируемых js-файлов.

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