【发布时间】:2012-05-31 09:01:16
【问题描述】:
我有 5 个模型,
- 人
- person_car
- 汽车(有很多轮胎)
- person_car_tire
- 轮胎(属于汽车)
所以我有这个观点 _form.html.erb
<%= form_for(@person) do |f| %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div>
<% Car.all.each do |c|%>
<div class="field">
<%= f.fields_for(:person_cars) do |ff|%>
Car Name: <%= ff.check_box :car_id %>|<%= c.car_name%>
<% c.tires.each do |b|%>
<div class="field">
<%= ff.fields_for(:person_car_tires) do |fff|%>
Tire: <%#= fff.check_box :tire_id%>|<%= b.tire_name%>
<%end%>
</div>
<%end%>
<%end%>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
当我保存它完美运行时,当我想使用此表单进行编辑时出现问题,因为它在视图中将每辆车的数据复制了 4 次。我一直在搜索允许额外选项的字段,所以我做了:
<%= form_for(@person) do |f| %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div>
<% @person.cars.each do |c|%>
<div class="field">
<%= f.fields_for(:person_cars, c) do |ff|%>
Actividad: <%= ff.check_box :car_id %> | <%= c.car.name%>
<% c.person_car_tires.each do |t|%>
<div class="field">
<%= ff.fields_for(:person_car_tires, t) do |fff|%>
Tarea: <%#= fff.check_box :tire_id%>|<%#= t.tire.name%>
<%end%>
</div>
<%end%>
<%end%>
</div>
<%end%>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
它现在可以工作了,但只显示我在新动作中选择的汽车和轮胎。并非所有我想要的(因为如果我使用第一个表单,它会在视图中复制复选框)。
我怎样才能对两个动作使用相同的表单?
希望有人可以帮助我。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 nested-attributes fields-for