Rails - добавление вложенных атрибутов, после чего проверка не проходит, новые вложенные атрибуты не передаются обратно: edit render - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть приложение 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])

, но это не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...