我有一个应用程序,我想要创建嵌套表单
我的模特:
class Abonent < ActiveRecord::Base
belongs_to :town
has_many :numbers, :dependent => :destroy
accepts_nested_attributes_for :numbers
end
class Number < ActiveRecord::Base
belongs_to :abonent
end
Abonents控制器:
class AbonentsController < ApplicationController
def new
@abonent = Abonent.new
end
def create
@abonent = Abonent.new abonents_params
if @abonent.save
redirect_to :towns
else
render action: "new"
end
end
private
def abonents_params
params.require(:abonents).permit( :fullname, :work_position, :department, :email, :town_id, numbers_attributes: [ :phone ] )
end
end
和支持者观看
<hr><br>
<%= form_for :abonents, url: abonents_path do |f| %>
<%= f.label :fullname %>:
<%= f.text_field :fullname %><br /> <br />
<%= f.label :work_position %>:
<%= f.text_field :work_position %><br /><br />
<%= f.label :department %>:
<%= f.text_field :department %><br /><br />
<%= f.label :email %>:
<%= f.text_field :email %><br /><br />
<%= f.label :town_id %>:
<%= f.select :town_id, Town.all.collect { |p| [ p.ru_name, p.id ] } %><br /><br />
<%= f.fields_for :numbers do |phones|%>
<%= phones.label :phone %>:
<%= phones.text_field :phone %><br /><br />
<% end %>
<%= f.submit %>
<% end %>
问题是当我提交表单时,它创建了一个abonent,但是没有为这个abonent创建数字。
我看到了许多不同的手册,并且无法在我的代码中找到错误。 请帮忙。 谢谢。
UPD 我在github上为此问题添加了repo。
答案 0 :(得分:1)
您需要build
相关记录
def new
@abonent = Abonent.new
@abonent.numbers.build
end