Я пытаюсь сделать таблицу из 2 разных наборов данных
Мой контроллер
@data = CompanyBorrower.find(params[:id])
@data1= @data.childs.all
@data2= @data.parents.all
Таблица (фрагмент)
<% @data1.zip(@data2) do |f1,f2| %>
<tr>
<td><%= f1.company_borrower1.name %></td>
<td><%= f2.company_borrower2.name %></td>
</tr>
<% end %>
НоЯ получаю "неопределенный метод` company_borrower2 'для nil: NilClass ".Если я удаляю один или другой набор данных, он работает нормально.
Мне кажется, я знаю проблему;Я думаю, что это потому, что «data1» возвращает 5 строк, в то время как «data2» будет иметь 1 строку.Если я переключаюсь, это работает, но я получаю только одну строку!
Так что я (думаю) знаю проблему, но не знаю, как ее решить?
Редактировать - Обновлено
Обратите внимание, что company_borrower1 и company_borrower2 используют одну и ту же модель -
Модель CompanyBorrower
has_many :childs, :class_name => 'Parent', :foreign_key => 'company_borrower_id'
has_many :parents, :class_name => 'Parent', :foreign_key => 'company_borrower_id1'
Родительская модель
belongs_to :company_borrower1, :class_name => 'CompanyBorrower', :foreign_key => :company_borrower_id
belongs_to :company_borrower2, :class_name => 'CompanyBorrower', :foreign_key => :company_borrower_id1
ОБНОВЛЕНИЕ 2
Если я сделаю следующее, он прекрасно работает, но размещает столбцы в строках.Я могу работать с этим, но все же предпочел бы знать, как добиться моего первоначального вопроса для дальнейшего использования
<tr>
<% @data1.each do |f1| %><td><%= f1.company_borrower1.name %></td><% end %>
</tr>
<tr>
<% @data2.each do |f1| %><td><%= f1.company_borrower2.name %></td><% end %>
</tr>