В процессе ввода новой записи (дочерней), которая является неполной и не может быть сохранена, я хочу иметь возможность добавить запись в другую модель (родительскую), а затем использовать ее для завершенияоригинал записи (ребенок).Родитель имеет много обязательных атрибутов, а не только одно поле.Я хочу сделать это как можно более сухим способом, используя представление «Создать / Создать» и проверки каждой модели.
Все примеры, которые я видел, показывают, как вводить родительские и дочерние данные водна форма, использующая acceptpts_nested_attributes_for.Я хочу сделать это в обратном порядке, создав нового ребенка, а затем использовать собственные формы родителей, чтобы добавить их, если они еще не существуют.
например, эта модель запроса на продажу, которая имеет несколько родительских моделей
class Enquiry < ActiveRecord::Base
belongs_to :salesperson
belongs_to :customer
belongs_to :site
end
Я хочу создать новый запрос и выбрать клиента и сайт, которые могут быть, а могут и не быть в базе данных.,Если они находятся в БД, автозаполнение найдет их, в противном случае мне нужно добавить нового клиента или сайт.Клиенту требуется больше, чем просто один атрибут, например, имя, которое нужно ввести.Также требуются другие данные, такие как адрес, контакт и т. Д. Я не хочу встраивать форму клиента в форму запроса, поскольку мне потребуется добавить новых клиентов из многих других частей приложения.Поэтому я всегда хочу использовать и поддерживать одну форму клиента: customer-> new.html.erb. Запрос не может быть сохранен без клиента, поэтому мне нужен способ сохранить частично введенные данные.
Я могу подумать о двух способах сделать это.
Сохраните все данные запроса, которые были частично введены в сеансе, откройте новое представление клиента и после его полного перенаправлениявернуться к форме запроса и отобразить данные, которые были введены до сих пор.
Некоторое всплывающее окно лайтбокса, которое может использовать новый вид родительской модели и при этом сохранять форму запроса открытой.фон.
Будет ли работать любой из них?Если так, может кто-нибудь показать мне пример кода, как заставить его работать?Иначе, есть ли другой лучший способ сделать это?