Всплывающее окно Ajax с использованием Ruby on Rails - PullRequest
4 голосов
/ 21 августа 2009

Это довольно простой вопрос, но я не могу найти хороший ответ на него. У меня есть страница в моем приложении Rails, где есть много объектов, которые можно пометить. При нажатии на кнопку флага должно появиться небольшое окно с подтверждением, маленькой формой и т. Д. Проблема в том, что я не могу понять, как это сделать с помощью шаблонов RJS.

Я использовал page.insert_html, но для этого требуется идентификатор. Чтобы сделать эту работу, я должен был назначить каждой вещи, которая может быть помечена уникальным идентификатором. Это не кажется очень чистым и все еще заставляет меня задуматься о том, чтобы убедиться, что может отображаться только одна форма и что поле исчезает при отправке. Есть ли более простое решение этой проблемы? По сути, я хочу создать нечто похожее на флажки, которые появляются в SO для флага. Извините, я относительно новичок в шаблонах RJS. Спасибо.

Ответы [ 2 ]

4 голосов
/ 21 августа 2009

Вы можете сделать это с помощью jquery facebox . Такого рода вещи лучше не делать в rjs, но в ненавязчивом javascript, куда все сегодня направляются, гораздо чище. Вы можете прикрепить facebox rel к вашим ссылкам, затем при щелчке он может открыть форму во всплывающем окне.

Тогда в вашем всплывающем окне вы можете сделать свою форму и перенаправить или что-то еще. Пользователь сможет щелкнуть только один, так как при открытии всплывающего окна на страницу накладывается оверлей, поэтому нажатие за его пределами либо не имеет никакого эффекта, либо закрывает форму (я думаю, что вы выбрали в конфигурации).

Звучит как путь.

2 голосов
/ 21 августа 2009

jQuery UI также имеет виджет Dialog, который действительно хорошо работает для такого рода вещей. Это хороший виджет, и вы можете настроить свою библиотеку jQuery UI, чтобы включить (или исключить, если вы хотите, чтобы более тонкий javascript передавался в браузер), а также другие удобные виджеты (аккордеон, прогрессбар и т. Д.)

Посмотрите примеры диалогов в jQuery Dialog

...