簡體   English   中英

為嵌套關聯呈現的html標簽未包裝在field_with_errors div中

[英]html tags rendered for nested association doesn't get wrapped in field_with_errors div

Rails 5.1.4,ruby:2.3.7

我有一個父模型和子模型的嵌套表單,並在父模型的范圍內驗證了子模型中標簽的唯一性。 問題是,當我在兩個表單中提交具有相同名稱的表單時,沒有一個被包裹在field_with_errors類中。 我需要將html標簽包裝在該類中,以便隨后可以使用bootstrap 4 invalid-feedback和無效的CSS類在表單上呈現錯誤。

如何使用field_with_errors div包裹dashboard_label的text_field來呈現表單?

這些模型如下:

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被重置為其原始值。

問題是,帶有功能字段的視圖從數據庫中加載數據,我猜想並使用下面的視圖代碼中的條件解決了覆蓋項目對象上瞬態錯誤的問題。

<%= 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塊上的集合移動到該塊內的條件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM