그래서 내 응용 프로그램에 매우 이상한 기능이 표시됩니다. 중첩 된 특성을 가진 꽤 복잡한 폼이 있습니다. 기본적으로 검증에 실패하면 양식으로 돌아가고 실패한 레코드가 복제됩니다. 검증이 실패한 후 모델이 레코드를 초기화하는 방식을 갖는 것으로 보입니다.중첩 된 특성이있는 양식의 유효성 검사 실패시 중복 된 레코드
참고 : formtastic을 사용하여 양식을 작성하고 있지만 그 원인을 배제했습니다.
내 모델은 꽤 복잡하지만 중요한 부분은 다음과 같습니다
...
accepts_nested_attributes_for :users
...
after_initialize :build_structure
...
private
def build_structure
# builds the first user when the firm is initialized
if users.length < 1
logger.debug "First User!!!"
user = users.new
contact = user.contact = Contact.new
contact.email_addresses.new
end
end
기초적 컨트롤러 :
def new
@firm = Firm.new
render "new", layout: "blankslate" # new.html.erb
end
def create
@firm = Firm.new(params[:firm])
respond_to do |format|
if @firm.save
format.html { redirect_to root_url(subdomain: @firm.url)}
else
format.html { render action: "new", layout: "blankslate" }
end
end
end
그리고보기 :
.container
.row
.span4.offset4.well
.page-header
%h1 Create Your Firm
= semantic_form_for @firm, url: signup_path do |f|
= f.input :name
= f.input :url
.page-header
%h1 Create Your User
= f.fields_for :users do |u|
= u.fields_for :contact do |c|
= c.input :first_name
= c.input :last_name
= c.fields_for :email_addresses do |cf|
= cf.input :value, label: "Email Address"
= u.input :password
= u.input :password_confirmation
= f.submit "Signup", class: "btn btn-primary"
추가 기록을 생성하지 않았 음을 확인하기 위해 추가 마법을 추가했습니다. –