当我提交此表单时,它在Members表中创建了2个相同的记录(表单的fields_for部分)。请帮助我理解为什么会这样。
基本设置是:Comp有很多团队,团队有很多成员。创建新团队时,创建的第一个成员应该是团队的秘书(这意味着成员表中的secretary_flag字段应设置为TRUE。)下面的表单应该创建一个新团队,创建第一个团队成员,以及将该团队成员标记为秘书。
控制器:
def new
@comp = Comp.find(params[:comp_id])
@team = @comp.teams.new
@team.members.build
end
def create
@comp = Comp.find(params[:comp_id])
@team = @comp.teams.create(params[:team])
if @team.update_attributes(params[:team])
flash[:success] = "Team added successfully."
redirect_to new_comp_team_member_path(@comp,@team)
else
render 'new'
end
end
表单视图:
<%= form_for [@comp,@team] do |builder| %>
<%= builder.label :team_name, "Team name" %>
<%= builder.text_field :team_name %>
<%= builder.fields_for :members do |f| %>
<%= f.label :member_email, "Email address of team secretary" %>
<%= f.text_field :member_email %>
<%= f.hidden_field :secretary_flag, :value => 1 %>
<% end %>
<%= builder.submit "Create new team" %>
<% end %>
在我的路线中:
resources :comps do
resources :teams do
resources :members
end
end
在我的模特中:
comp.rb:
attr_accessible :teams_attributes
has_many :teams, :dependent => :destroy
accepts_nested_attributes_for :teams, :allow_destroy => :true
team.rb:
attr_accessible :members_attributes
belongs_to :comp
has_many :members
accepts_nested_attributes_for :members
member.rb:
belongs_to :team
答案 0 :(得分:0)
我发现的解决方案非常基础。在我的创作中我不小心把:
if @team.update_attributes(params[:team])
应该是什么时候:
if @team.save(params[:team])
我仍然不明白为什么会创建2个相同的记录,但它现在有效。