Существует модель A, которая has_many
B, и форма, в которой можно создать новый A и
добавить / удалить Bs. То есть есть ссылка Добавить новый B , который запускает какой-то Javascript, чтобы вставить еще один фрагмент, где заполняются значения для B. Все отлично работает.
Проблема
Задание B выполняется путем выбора значений с помощью пары select
коробки. Проблема в том, что в зависимости от значения, выбранного в одном,
коллекции, используемые в других выборках, должны иметь область видимости, чтобы показывать только соответствующие опции. Это классический чехол
с динамическими полями выбора (думаю, страны - поля выбора государства), только с более
выберите поля, и я бы хотел, чтобы все поля выбора отображались изначально, поэтому
пользователь может начать с любого места (сначала выберите штат и выберите страну)
сужает свою коллекцию до тех, которые могут быть выбраны для этого состояния).
Текущий подход
B отображаются в таблице, по одному B на строку, и я думал, что смогу
используйте AJAX для замены строки таблицы (содержимого) после извлечения новых коллекций
с сервера. Очевидно, что для этого нужна пара вещей.
tr
тег должен иметь уникальный атрибут id, поэтому можно использовать replace_html.
- необходимо иметь триггер при изменении для каждого поля выбора
- необходимо передать значения всех полей выбора (для этой строки) на сервер
Я застрял здесь из-за следующего:
- добавление B должно иметь что-то уникальное, чтобы идентифицировать тег
tr
.
как все выбирает в этом ряду. Я могу использовать Time.now.to_i
, но это не
работать на Javascript по ссылке, чтобы добавить новый B, потому что это будет
жестко закодировать значение и все использовать то же самое.
- не уверен, стоит ли мне идти с
observe_field
или удаленным вызовом в списке выбора
помощник поля формы.
- как собрать значения всех выборок в одной строке и передать их удаленно
на сервер при срабатывании?
Проект, над которым я работаю, это Rails 1.2.3 и использует Prototype. Пожалуйста, не стесняйтесь публиковать "более новые" решения, потому что мне любопытно увидеть различные решения.
Любая помощь по этому вопросу высоко ценится. Заранее спасибо!