保留嵌套属性的值,以在表单提交时显示验证错误

Keep nested attribute's values to show validation errors on form submit

提问人:Imanpal Singh 提问时间:11/14/2023 最后编辑:Imanpal Singh 更新时间:11/14/2023 访问量:27

问:

我有一个模型Parent

class Parent < ApplicationRecord
  has_many :jobs
  accepts_nested_attributes_for :jobs, allow_destroy: true
end

和型号Job

class Job < ApplicationRecord
  belongs_to :parent
  belongs_to :category
  scope :for_category, ->(c) { joins(:category).where(category: { name: c }) }

  validates :destination, presence: true 
end

表单如下所示

= simple_nested_form_for @account, url: account_path, remote :true
   = f.simple_fields_for :jobs, @jobs do |jobs_form|
     = jobs_form.input :destination, as: :string

负责的控制器看起来像

class AccountsController < BaseController
  before_action :fetch_jobs

  def edit

  end

  def update
    @account.update(account_params)
    unless @account.valid?
      render :edit
    end
  end

  private
  def fetch_jobs
    @account.jobs.for_category(params['category'])
  end  
end

提交表单后,验证失败,我想显示那些未保存的对象和错误。但是它们已从对象中删除。 我尝试稍后再做,但甚至没有为嵌套对象分配属性。我猜它是从数据库中获取的,而不是从内存中对象的属性中获取的。@account@account.assign_attributes@account.saveassign_attributesscope

即使验证失败,如何将嵌套属性保留在@account对象中,以便可以通过突出显示视图中的嵌套对象来显示验证错误?

Ruby-on-Rails ActiveRecord 嵌套属性

评论


答: 暂无答案