Ошибка типа RJS в рельсах? - PullRequest
       29

Ошибка типа RJS в рельсах?

1 голос
/ 22 сентября 2011

Я добавляю link_to_remote, чтобы загрузить модальное диалоговое окно из частичного.Но когда я запускаю приложение, я получаю следующую ошибку ..

RJS error:

TypeError: $("create_event_dialog").dialog is not a function

Когда я нажимаю кнопку ОК, то снова получаю другое диалоговое окно.ошибка?У меня есть div с идентификатором create_event_dialog.Я использую Prototype, и я не мог найти способ решить эту проблему.Пожалуйста, помогите мне.

1 Ответ

3 голосов
/ 22 сентября 2011

Ваш код выглядит так, как будто вы действительно хотите использовать диалоговое окно jQuery UI .Насколько я знаю, Prototype (или Scriptaculous) не имеет встроенной поддержки диалога.

Если вы хотите иметь диалоговое окно jQuery UI, у вас есть два варианта:

  1. Использовать jQuery и jQuery UI вместе с Prototype.
  2. Replace Prototypeи только использовать jQuery

Опция 1:

Чтобы использовать jQuery вместе с Prototype, необходимо включить библиотеки jQuery Javascript и включить режим совместимости, вызвав jQuery.noConflict().После этого функция $ принадлежит Prototype, и для всех функций jQuery вы должны использовать jQuery(...).Например jQuery('create_event_dialog').dialog(... в вашем случае.

Вы можете найти подробную информацию о Использование jQuery с другими библиотеками .

Опция 2:

Вы должны удалить прототипбиблиотеки и вместо этого включают библиотеки JQuery.Вам также нужна библиотека совместимости jRails , чтобы сохранить помощников прототипа.И вам нужно изменить существующий код прототипа на код jQuery.

Например, ваш оператор Element.update будет выглядеть так:

$("#create_event".html("<form action=...")

См. Использование jQuery сRuby on Rails для получения более подробной информации.

Осторожно: В зависимости от вашего существующего кода вариант 2 может быть очень трудоемким, но в результате получится более чистый код Javascript.Также стоит подумать о переходе на Rails 3.1 с UJS и jQuery в качестве официальной библиотеки Javascript.

...