2012-03-08 4 views
2

У меня эти две модели: компания и компанияКонтакт.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, я получил кучу ошибок.

Хорошо, так что для связи только одной компании в компании, я попробовал встречное решение, вы знаете, что в цикле set counter = 0, а затем проверьте, установлен ли счетчик> 0, но это «решение» не работает. Что ты предлагаешь?

ответ

0

Если я вам исправить, то

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

является то, что вы ищете.

Таким образом, если у компании уже есть контакт, то больше контактов не создается. Аналогично, если у компании нет контакта, это создаст контакты, которые затем будут использоваться f.fields_for :company_contacts для визуализации в форме.

Смежные вопросы