2012-03-08 105 views
2

我有這兩個模型:Company and CompanyContact。Rails 3.如何只顯示一個嵌套模型表單?

所以我平常...

companies_controller.rb 
def edit 
    @company = Company.find(params[:id]) 
    student = @company.students.build 
    company_contact = @company.company_contacts.build 
end 

company.rb 
has_many :company_contacts, :dependent => :destroy 
accepts_nested_attributes_for :company_contacts, :reject_if => :reject_company_contacts, :allow_destroy => true 

company_contact.rb 
belongs_to :company 

form.html.erb 
<%= f.fields_for :company_contacts do |builder| %> 
    <%= render "company_contact_fields", :f => builder %> 
<% end %> 

_company_contacts.html.erb 
<p style="margin:5px 0;"> 
    <%= f.label :first_name %><br /> 
    <%= f.text_field :first_name, :class => 'text_field' %> 
</p> 

<p style="margin:5px 0;"> 
    <%= f.label :email %><br /> 
    <%= f.text_field :email, :class => 'text_field' %> 
</p> 

在編輯形式,如果我已經有一個公司一個公司接觸,它給了我現有的記錄加上另一個空公司聯繫表單隨時可以填寫。這是可以的,因爲它應該發生。

我需要做的只是一個公司聯繫,所以如果已經有公司聯繫人,我不想顯示另一個表格來添加額外的公司聯繫人。我不想設置has_one關係,因爲我的客戶可能希望在未來添加額外的公司聯繫人,並且當我嘗試has_one關係時,我遇到了一堆錯誤。

好吧,只有一家公司聯繫每家公司,我試過一個計數器解決方案,你知道在循環設置計數器= 0,然後檢查計數器> 0,但「解決方案」沒有工作。你會建議什麼?

回答

0

如果我給你正確的,那麼

@company.company_contacts.build unless @company.company_contacts.present? 

是你在找什麼。

這樣,如果公司已經有聯繫人,則不再建立聯繫人。同樣,如果公司沒有聯繫人,這將建立聯繫人,然後由f.fields_for :company_contacts使用該聯繫人進行表格呈現。

相關問題