Подтвердить что ты не робот

Где функция link_to_function исчезла в Rails 3?

Я просто играл с бета-версией Rails 3 и заметил, что link_to_function теперь нет. Я предполагаю, что есть альтернативный метод достижения того же результата (событие onclick?), Но мне было интересно, есть ли еще способ Rails-3'y сделать это. ТИА.

4b9b3361

Ответ 1

Rails 3, похоже, покончил с Prototype Helper в пользу менее навязчивого/аглогического подхода к библиотеке JS. Цель состоит в том, чтобы исключить все встроенные javascript, созданные Rails. Prototype Helper генерирует почти все javascript.

Теперь любой из не удаленных вариантов помощников будет генерировать правильный javascript для удаленного вызова в вашей JS-библиотеке по выбору, просто предоставив опцию: remote = > true.

К сожалению, это не относится к методам функции x. В настоящее время существуют прототипы старых помощников, которые больше не являются основной частью Rails.

Вы также можете использовать вызов, определенный в ActionView:: Helpers:: PrototypeHelper:: JavascriptGenerator:: GeneratorMethods, чтобы предоставить код javascript для: onclick как html_option для link_to, но это не совсем красиво.

Примеры:

Rails < 3                      | Rails 3
link_to_remote "target", url   | link_to "target", url, :remote => true
form_remote_for @post          | form_for @post, :remote => true

и т.д....

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

Прежде чем вы сможете использовать его, вам нужно будет указать правильные исходные файлы js. Убедитесь, что вы загружаете файлы prototype.js и rails.js, а также библиотеку и драйвер для выбора JS-рамки на своем месте.

Помните, что Rails 3 теперь находится в состоянии бета-тестирования. Но это не значит, что это сделано. Я честно понятия не имею, как link_to_function будет заменен. Это противоречит идеалу ненавязчивого javascript.

Ответ 2

Чтобы ответить на мой собственный вопрос, кажется, что это работает и достаточно для того, что мне нужно:

link_to "name", nil, :onlick => "alert('Hello, world!')"

Ответ 3

link_to_remote можно сделать следующим образом

link_to "target" ,: remote = > true

и сделать сообщение ajax/получить у вас

link_to "target" , {: controller = > controller,: action = > method,},: remote = > true

В рельсах 2 это было как

link_to_remote "target" ,: url = > {: controller = > controller,: action = > метод,},: удаленный = > true