Динамические формы Fancybox в Rails - PullRequest
1 голос
/ 11 мая 2011

Может ли кто-нибудь указать мне на несколько простых пошаговых руководств, которые помогли бы мне понять, как соединить Fancybox и Ajax?

У меня есть три модели:

Class Event
    belongs_to :site
    belongs_to :operator
End

Class Site
    has_many :events
End

Class Operator
   has_any :events
End

Пользователи могутдобавьте новое событие и выберите «Сайт» или «Оператор» в полях выбора.Я также создал быстрые добавления паролей для сайта и оператора.Они отображаются в div в форме Event и отображаются в Fancybox при нажатии на ссылку.

<%= link_to_box "Add", "#site" %>
<%= link_to_box "Add", "#operator" %>

<div id="site">
    <%= render 'sites/quickadd' %>
</div>

<div id="operator">
    <%= render 'operators/quickadd' %>
</div>

Пока все хорошо.

Теперь у меня два вопроса.

1 - Как скрыть элементы быстрого добавления в форме события, но отобразить их в Fancybox.Классы CSS, такие как display: none или visibility: hidden, приводят к тому, что партиалы не отображаются ни в одном месте.В настоящее время партиалы отображаются в конце формы события, а также во всплывающем окне Fancybox, но это не идеально.

2 - Как настроить эти пароли quickadd, чтобы они динамически обновляли форму события.Например я добавляю новое событие для сайта Foobar.Foobar недоступен в поле выбора, поэтому я нажимаю «добавить», введите Foobar во всплывающей форме, нажмите «Сохранить», и Foobar автоматически устанавливается в поле выбора в форме события.

Я предполагаю, что вопрос 2будет задействовать Ajax и вызовет remote => true.Однако я очень новичок в этом и действительно нуждаюсь в базовом пошаговом руководстве, которое помогло бы мне понять, как реализовать это.Например, ссылки «добавить» должны быть удаленными или частичными?Если частичные, как я могу это кодировать?После сохранения, как мне обновить и установить поле выбора родительской формы?

Как я уже сказал, основные вещи, но прочитав несколько руководств для Fancybox и других лайтбокс-подобных всплывающих окон, а также несколько руководств для Ajax, я 'У меня все еще проблемы с их связью.

Спасибо за любые указатели.

1 Ответ

0 голосов
/ 06 июня 2011

1) Если он не отображает и не скрывает правильные элементы для вас, то я бы поставил их в качестве отображения: нет; в css и используйте что-то подобное для звонка на fancybox

$("#site").fancybox({
    onStart     :   function() {
        $('#DIV').show();
    },

    onClosed    :   function() {
                $('#DIV').hide();
    }
});

2) Когда у меня есть форма, подобная вашему описанию, после того, как вы закончите отправку формы (которую я отправлю, используя: remote => true в теге формы, вы можете проверить ее на наличие ajaxComplete. И вы можете установить некоторые из них. переменные в ваших файлах create.js.erb или update.js.erb, которые будут отображать и скрывать формы, устанавливать текущий индекс или вам может потребоваться перезагрузить список после того, как ajaxCompleted будет «завершен»

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

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