У меня есть интересная проблема, связанная с этапом создания объекта в моем музыкальном приложении Rails 3.
У меня есть две модели (не настоящие модели, а для простоты): Playlist Song
Плейлист имеет_много песен; Песня принадлежит плейлисту.
Каждый объект списка воспроизведения должен иметь точное количество песен. Каждая песня должна принадлежать плейлисту.
Учитывая это, я хочу создать процесс создания списка воспроизведения, который также включает в себя одновременное создание всех необходимых песен.
Другое дело, что для получения данных песни пользователь вводит запрос (который я не буду сохранять в модели песни), с помощью которого я затем собираю данные из API. Это данные, которые следует использовать для создания объекта Song. Поэтому я не могу (не думаю?) использовать традиционный form_for.
Вместо этого я использую удаленный form_tag. Эта форма запрашивает запрос, а затем использует запрос Ajax для извлечения данных, которые помещаются во временный объект Song, а затем отображаются на странице создания списка воспроизведения с использованием представления Song. Эта форма повторно используется для всех необходимых объектов Song для списка воспроизведения.
Итак, идея состоит в том, что когда пользователь вводит необходимое количество запросов (то есть добавляет необходимое количество песен в список воспроизведения), ему предоставляется новая кнопка, которая позволяет ему отправить информацию о списке воспроизведения и продолжить процесс. Затем будет создан список воспроизведения со всеми объектами Song, которые были созданы с помощью Ajax в качестве дочерних элементов.
На самом деле, я не могу понять, как это работает элегантно. Хотя я создаю объекты Song с помощью Ajax, они нигде не сохраняются, и они не знают, в какой список воспроизведения они должны быть добавлены (поскольку объект списка воспроизведения еще не существует в базе данных). Следовательно, когда я перехожу к следующему шагу, я остаюсь без всех данных песни. Я изучил использование вложенных форм с accepts_nested_attributes_for, но я не могу найти способ использовать его с моей настройкой (форма, не основанная на модели, с использованием Ajax).
Итак, я застрял. Если кто-то может помочь, это было бы очень признательно.