Rails4:嵌套表格
Rails 4: nested forms
我有两个模型:
class Incident < ActiveRecord::Base
belongs_to :person
accepts_nested_attributes_for :person
end
和
class Person < ActiveRecord::Base
has_many :incidents
validates :name, presence: true
end
我希望用户能够在同一事件的表单中创建或不创建此人。
我的事件控制者:
def new
@incident = Incident.new
@incident.build_person
end
def create
@incident = Incident.new(incident_params)
if @incident.save
redirect_to event_path(params[:incident]["event_id"].to_i)
else
redirect_to events_path
end
end
private
def incident_params
params.require(:incident).permit(:incident_type_id, :event_id, :user_id,
:description, :supporter_id, :person_id, :supporter_group_id,
person_attributes: [:id, :name, :surname, :second_surname, :identity_document])
end
当我保存一个人的事件时,此代码有效。但是当我想保存一个没有人的事件时,因为不需要,这段代码会失败,因为它等待一个人(name can't be blank
)。没有人我怎么能挽救事故?
尝试使用
accepts_nested_attributes_for :person, reject_if: :all_blank
这意味着...
如果您没有在事件新页面上输入所有人物属性,人物模型将不会执行验证,只会创建事件记录。
如果您输入任何人员属性,人员模型执行验证并创建事件和人员记录。
我有两个模型:
class Incident < ActiveRecord::Base
belongs_to :person
accepts_nested_attributes_for :person
end
和
class Person < ActiveRecord::Base
has_many :incidents
validates :name, presence: true
end
我希望用户能够在同一事件的表单中创建或不创建此人。
我的事件控制者:
def new
@incident = Incident.new
@incident.build_person
end
def create
@incident = Incident.new(incident_params)
if @incident.save
redirect_to event_path(params[:incident]["event_id"].to_i)
else
redirect_to events_path
end
end
private
def incident_params
params.require(:incident).permit(:incident_type_id, :event_id, :user_id,
:description, :supporter_id, :person_id, :supporter_group_id,
person_attributes: [:id, :name, :surname, :second_surname, :identity_document])
end
当我保存一个人的事件时,此代码有效。但是当我想保存一个没有人的事件时,因为不需要,这段代码会失败,因为它等待一个人(name can't be blank
)。没有人我怎么能挽救事故?
尝试使用
accepts_nested_attributes_for :person, reject_if: :all_blank
这意味着...
如果您没有在事件新页面上输入所有人物属性,人物模型将不会执行验证,只会创建事件记录。 如果您输入任何人员属性,人员模型执行验证并创建事件和人员记录。