Куда исчезла link_to_function в Rails 3? - PullRequest
24 голосов
/ 12 февраля 2010

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

Ответы [ 3 ]

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

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. Убедитесь, что вы загружаете prototype.js и rails.js или библиотеку и драйвер для платформы JS по своему выбору.

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

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

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

link_to "name", nil, :onlick => "alert('Hello, world!')"
0 голосов
/ 24 мая 2011

link_to_remote можно сделать вот так

link_to "target",: remote => true

и сделать пост Ajax / получить у вас

link_to "target", {: controller => контроллер,: action => method,},: remote => true

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

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

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