2011-07-24 55 views
4

我有一張場地表,我正在場地編輯頁面上使用嵌套形式向每個場地添加優惠。但是,每次添加新報價時,fields_for表單都會保存輸入的文本,併爲要添加的另一個報價記錄創建一個新的空白表單。如何停止添加記錄的嵌套表單複製?

我只是想爲添加的每個記錄添加一個「添加新報價」表單。

無報價增加 - 這是好的: enter image description here

一個提議說 - 現在那裏有2 '添加新的報價' 形式和不必要的空白報價部分:

enter image description here

這是我想要它看起來像添加一個報價後: enter image description here

的新的空白報價形式和數量空白諧音變化的數量正在興建中的控制器(在微小其1)

場館控制器

class VenuesController < ApplicationController 
    def edit 
    @venue = Venue.find(params[:id]) 
    1.times { @venue.offers.build } 
    end 

    def update 
    @venue = Venue.find(params[:id]) 
    if @venue.update_attributes(params[:venue]) 
     flash[:notice] = 'Venue updated successfully' 
     redirect_to :back 
    end 
    end 
end 

場館模型

class Venue < ActiveRecord::Base 
    has_many :offers 
    accepts_nested_attributes_for :offers 
end 

場館edit.html.erb

 <%= form_for @venue do |f| %> 

     <h2 class="venue_show_orange">Offers</h2> 

     <div class="edit_venue_details"> 
      <% if @venue.offers.count.zero? %> 
      <div class="no_offers"> 
       No offers added yet. 
      </div> 
      <% else %> 
      <%= render :partial => 'offers/offer', :collection => @venue.offers %> 
      <% end %> 

      <div class="clearall"></div> 

      <h2 class="edit_venue_sub_header">Add a new offer</h2>  

      <%= f.fields_for :offers do |offer| %> 
      <p class="edit_venue">title: <br> 
      <%= offer.text_field :title, :class => "edit_venue_input" %></p> 
      <% end %> 
     </div> 

     <button class="submit_button" type="submit"> Save changes</button> 
     <% end %> 

所以,我怎麼可以只是一個場館編輯頁面上添加新的報價形式,它讓我添加一個新的邀約,則顯示空白表格,以便它可以再次使用?此外,有沒有辦法阻止創建空白報價部分?

非常感謝任何幫助,非常感謝!

回答

6
class VenuesController < ApplicationController 
    def edit 
    @venue = Venue.find(params[:id]) 
    end 
    ... 
end 

場館edit.html.erb

<%= f.fields_for :offers, @venue.offers.build do |offer| %> 
    <p class="edit_venue">title: <br> 
    <%= offer.text_field :title, :class => "edit_venue_input" %></p> 
<% end %> 
+0

非常感謝,做到了!非常感激。 – Dave

0

我不確定這是否可行,但您是否嘗試過以下方法?

<%= f.fields_for @venue.offers.last do |offer| %> 

我認爲問題是,你通過它的符號:報價,這導致了創造所有優惠字段的字段,但是你應該能夠只對特定對象傳遞給fields_for方法以及。

+0

感謝您的迅速反應,這就是清除所有不需要重複的形式,但現在不會保存新的記錄,但沒有給出錯誤。 – Dave

+0

您可能必須在更新方法中手動添加它。就像'@venue.offers << params [:venue] [:offer]'或什麼的。 – harald