рельсы вложенные атрибуты ajax / javascript - PullRequest
1 голос
/ 30 марта 2011

Я пытаюсь использовать метод accepts_nested_attributes_for, основанный на учебнике Райана Бейтса (http://railscasts.com/episodes/196-nested-model-form-part-1).

Однако для моей формы я хочу иметь список выбора, состоящий из дочерних элементов, чтобы у родительской формы был список дочерних элементов. Затем я хочу динамически добавлять детей и заполнять их в поле выбора через ajax. Я хочу, чтобы эти дети создавались, даже если отправка формы отменяется.

вопрос - возможно ли это?

спасибо!

РЕДАКТИРОВАТЬ: у меня есть форма, заполняющая детей в списке уже. Вопрос в том, будет ли работать часть AJAX. Можно ли отправить только часть формы?

1 Ответ

1 голос
/ 10 апреля 2011

Оказывается, я в конечном итоге использовал комбинированный список автозаполнения jquery (http://jqueryui.com/demos/autocomplete/#combobox) с некоторыми модификациями. В частности, перечисленная функция change: ищет недопустимые выборы (что является нашим случаем, если пользователь вводит в комбинированный список). код по умолчанию из виджета:

...
    change: function( event, ui ) {
    if ( !ui.item ) {
        ...
        });
        if ( !valid ) {
            // remove invalid value, as it didn't match anything
            $( this ).val( "" );
            select.val( "" );
            input.data( "autocomplete" ).term = "";
            return false;
        }
    }
}

...

и я изменил его на:

    ...
    change: function( event, ui ) {
    if ( !ui.item ) {
        ...
        });
        if ( !valid ) {
            var _new_text = $(this).val()
            var _new_option = '<option value="'+_new_text+'">' + _new_text + '</option>'
            select.prepend(_new_option);//append to combobox
            //now let's select it for submission
            select.children( "option" ).each(function(){
              if( $(this).text().match(_new_text) ){
               this.selected = true;
                return false;
              } 
            })

        }
    }
    }

...

Не уверен, что есть лучший способ сделать это, но сейчас я здесь! Сейчас работаю над фильтрацией контента в Rails, но это уже другая история.

...