Вопрос

Я только что играл с бета-версией 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top