我有这两个模型:公司和公司联系。
所以我有平常......
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关系时,我遇到了大量错误。
好的,每个公司只有一个公司联系人,我尝试了一个计数器解决方案,你知道在循环设置counter = 0然后检查是否计数器&gt; 0但是那个&#34;解决方案&#34;没有工作。你会建议什么?
答案 0 :(得分:0)
如果我纠正你,那么
@company.company_contacts.build unless @company.company_contacts.present?
正是您要找的。
这样,如果公司已有联系人,则不再建立联系人。同样,如果公司没有联系,这将构建联系人,然后f.fields_for :company_contacts
将使用这些联系人在表单中进行呈现。