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