Куда исчезла link_to_function в Rails 3?
-
20-09-2019 - |
Вопрос
Я только что играл с бета-версией Rails 3 и заметил, что link_to_function больше нет.Я предполагаю, что существует альтернативный метод достижения того же результата (событие onclick?), но мне было интересно, есть ли более Rails-3-й способ сделать это.ТИА.
Решение
Rails 3, похоже, отказался от Prototype Helper в пользу менее навязчивого подхода, не зависящего от JS-библиотеки.Цель состоит в том, чтобы исключить весь встроенный JavaScript, созданный Rails.Prototype Helper сгенерировал практически весь JavaScript.
Теперь любой из неудаленных вариантов помощников будет генерировать правильный JavaScript для удаленного вызова в выбранной вами JS-библиотеке, просто указав параметр :remote => true.
К сожалению, это не относится к методам x to function.На данный момент существуют прототипы устаревших помощников которые больше не являются основной частью 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.Убедитесь, что вы загружаете прототипы.js и рельсы.js или библиотеку и драйвер для выбранной платформы JS вместо них.
Помните, что Rails 3 сейчас находится в стадии бета-тестирования.Но это не значит, что дело сделано.Честно говоря, я понятия не имею, как будет заменена link_to_function.Это противоречит идеалу ненавязчивого JavaScript.
Другие советы
Чтобы ответить на мой собственный вопрос, кажется, это работает и достаточно для того, что мне нужно:
link_to "name", nil, :onlick => "alert('Hello, world!')"
link_to_remote можно сделать так
link_to "цель",:remote => true
и сделать сообщение ajax/получить у вас есть
link_to "target", {: controller => controller,: action => method,},: remote => true
В рельсах 2 было так
link_to_remote "target",: url => {: controller => controller,: action => method,} ,: remote => true