Есть модель А, которая has_many
Б, и форма, в которой можно создать новую А и добавить/удалить Б. т.е. есть ссылка Добавить новый B, которая запускает некоторый Javascript для вставки другого фрагмента, где нужно заполнить значения для B. Все работает нормально.
Проблема
Указание B выполняется путем выбора значений с помощью нескольких полей выбора. Проблема заключается в том, что в зависимости от значения, выбранного в одном, коллекции, используемые в других выборках, должны иметь область действия, чтобы отображать только соответствующие параметры. Это классический случай с динамическими полями выбора (подумайте о полях выбора страны и штата), только с большим количеством полей выбора, и я бы хотел, чтобы все поля выбора отображались изначально, чтобы пользователь мог начать из любого места ( сначала выберите штат, а поле выбора страны сужает свою коллекцию до тех, которые можно выбрать для этого штата).
Текущий подход
B отображаются в таблице, по одной B в строке, и я подумал, что могу использовать AJAX для замены строки таблицы (контента) после получения новых коллекций с сервера. Это, очевидно, требует наличия нескольких вещей.
tr
должен иметь уникальный атрибут id, чтобы можно было использовать replace_html.- нужно иметь триггер на изменение для каждого поля выбора
- необходимо передать все значения полей выбора (для этой строки) на сервер
Я застрял здесь из-за следующего:
- добавление B должно иметь что-то уникальное, чтобы идентифицировать тег
tr
, а также все выборки в этой строке. Я могу использоватьTime.now.to_i
, но это не сработает для Javascript, запущенного по ссылке, чтобы добавить новый B, потому что это будет жестко кодировать значение, и все будут использовать одно и то же. - не уверен, следует ли мне использовать
observe_field
или удаленный вызов в помощнике поля формы выбора. - как подобрать значения всех выборок в одной строке и передать их удаленно на сервер при срабатывании?
Проект, над которым я работаю, — это Rails 1.2.3, использующий Prototype. Пожалуйста, не стесняйтесь публиковать и «более новые» решения, потому что мне любопытно увидеть разные решения.
Любая помощь в этом высоко ценится. Заранее спасибо!
form_counter
в javascript, и каждый раз, когда создается новый фрагмент, добавляю его к этой переменной и использую его значение в качестве уникального идентификатора для нового выбора. - person bricker   schedule 18.10.2011