HTML-теги, отображаемые для вложенной ассоциации, не заключаются в div_with_errors div - PullRequest
0 голосов
/ 10 мая 2019

Rails 5.1.4, ruby: 2.3.7

У меня есть вложенная форма для родительской модели и дочерней модели с проверкой уникальности метки в дочерней модели в области действия родительской модели.,Проблема заключается в том, что, когда я отправляю форму с одинаковыми именами в обеих формах, они не включаются в класс field_with_errors.Мне нужно, чтобы тег html был помещен в этот класс, чтобы впоследствии я мог отображать ошибки в форме, используя начальную загрузку 4 invalid-feedback и недопустимые классы css.

Как я могу отрисовать форму с помощью field_with_errors div, обертывающего текстовое поле для dashboard_label?

Модели следующие:

class Project < ApplicationRecord
  has_many :study_media_files
end

class StudyMediaFile < ApplicationRecord
  belongs_to :project
  validates :dashboard_label, uniqueness: { scope: :project } 
end

Код контроллера выглядит следующим образом:

class DsasController < ApplicationController
  def show
    @project = Mrcore::Project.find params[:id]
  end

  def update
    @project = Mrcore::Project.find params[:id]
    if(@project.update project_params)
      redirect_to @project, notice: 'updated successfully'
    else
      render 'show'
    end
  end

  private

  def project_params
    params.require(:project).permit(study_media_files_attributes: %i[id dashboard_label show])
  end
end

Представление:

<%= f.fields_for :study_media_files, @project.study_media_files.non_zero_duration do |media_form| %>
    <div class="row ">
        <div class="col-4 small">
            <%= media_form.object.affdex_movie_id %>
        </div>
        <div class="col-5">
            <%= media_form.text_field :dashboard_label, class: 'input-sm col-lg form-control', required: true %>
        </div>
        <div class="col-2 float-right">
            <%= media_form.check_box :show, { class: 'form-check-input ml-2' } %>
        </div>
    </div>
<% end %>

По какой-то причине dashboard_label объекта возвращается к исходному значению.

1 Ответ

0 голосов
/ 13 мая 2019

Проблема в том, что представление с полями для функции загружает данные из базы данных, я полагаю, и переопределяет ошибки, которые являются временными для объекта проекта, с помощью условия в коде представления, как показано ниже, решает проблему.

<%= f.fields_for :study_media_files do |media_form| %>
    <% if media_form.object.duration > 0 %>
        <div class="row ">
            <div class="col-4 small">
                <%= media_form.object.affdex_movie_id %>
            </div>
            <div class="col-5">
                <%= media_form.text_field :dashboard_label, class: 'input-sm col-lg form-control' %>
            </div>
            <div class="col-2 float-right">
                <%= media_form.check_box :show, { class: 'form-check-input ml-2' } %>
            </div>
        </div>
    <% end %>
<% end %>

По существу перемещение коллекции в блоке fields_for в состояние внутри блока.

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