У меня есть приложение Rails с вложенными атрибутами. Мой MVC отлично работает, за исключением случаев, когда вложенная проверка не выполняется. Вот мой родительский контроллер модели:
def update
if @model.update(model_params)
respond_to do |format|
format.html { redirect_to @model, notice: 'Model was successfully updated.'}
end
else
render :edit
end
end
Проблема возникает в моем представлении модели, когда я снова строю вложенную форму:
<%= f.simple_fields_for :nested_model, @model.nested_model.joins(:related_model).order(:name) do |i| %>
Я получаю все оригинальные элементы nested_model в формы, но новые, которые были переданы в параметрах, не добавляются. Это работает на 100%, когда нет проблем с проверкой. Как мне добавить эти недействительные элементы nested_model сюда? Я чувствую, что существует существующее решение, которое я не могу найти легко.
ОБНОВЛЕНИЕ
Кажется, связано с этим:
rails fields_for не отображается после ошибки проверки на вложенной форме
Мне нужно добавить в свое обновление и создать действия:
@model.nested_model.build(params[:nested_model_attributes])
Когда я копаю Я вижу, что вновь созданные (но недействительные записи) передаются в представление. Когда fields_for обрабатывает их, если я удаляю связанный объект, форма отрисовывается как ожидалось:
<%= f.simple_fields_for :nested_model do |i| %>
, за исключением того, что я хочу объединение. Я думаю, что могу обойти это, но это некрасиво. Я пытался:
@model.nested_model.joins(:related_model).build(params[:nested_model_attributes])
, но это не работает.