0

我有5款車型,Rails的 - 使用新建/編輯使用相同的形式fields_for

  1. person_car
  2. 車(有許多輪胎)
  3. person_car_tire
  4. 輪胎(屬到汽車)

所以我有這個看法 _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 %> 

它現在的作品,但只顯示我選擇的新動作的汽車和輪胎。不是所有我想要的(因爲如果我使用第一種形式它複製視圖中的複選框)。

如何爲這兩種操作使用相同的表單?

希望有人能幫助我。

回答

0

對於新建和編輯,您都可以使用相同的_form部分。你只需要將局部變量設置爲不同的值到這種形式。基本上,不管什麼不同,把它作爲一個參數(局部變量)抽象爲這個函數式的部分。

相關問題