提问人:Imanpal Singh 提问时间:11/14/2023 最后编辑:Imanpal Singh 更新时间:11/14/2023 访问量:27
保留嵌套属性的值,以在表单提交时显示验证错误
Keep nested attribute's values to show validation errors on form submit
问:
我有一个模型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.save
assign_attributes
scope
即使验证失败,如何将嵌套属性保留在@account对象中,以便可以通过突出显示视图中的嵌套对象来显示验证错误?
答: 暂无答案
评论