Ruby on rails 数组#zip不工作(nil:NilClass的未定义方法)

Ruby on rails 数组#zip不工作(nil:NilClass的未定义方法),ruby-on-rails,ruby,Ruby On Rails,Ruby,我试图用两组不同的数据做一个表格 我的控制器 @data = CompanyBorrower.find(params[:id]) @data1= @data.childs.all @data2= @data.parents.all 表格(片段) 父模型 belongs_to :company_borrower1, :class_name => 'CompanyBorrower', :foreign_key => :company_borrower_id belongs_to :co

我试图用两组不同的数据做一个表格

我的控制器

@data = CompanyBorrower.find(params[:id])
@data1= @data.childs.all
@data2= @data.parents.all
表格(片段)

父模型

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>

我的猜测是对返回的内容使用
try
。因此,与此相反:

<td><%= data1.name %></td>
<td><%= data2.name %></td>

你应该这样做:

<td><%= data1.try(:name) %></td>
<td><%= data2.try(:name) %></td>

我的猜测是对返回的内容使用
try
。因此,与此相反:

<td><%= data1.name %></td>
<td><%= data2.name %></td>

你应该这样做:

<td><%= data1.try(:name) %></td>
<td><%= data2.try(:name) %></td>

如果您使用的是ruby 2.3或更高版本,您可以使用安全导航操作符(&)。而不是尝试方法

        <% @data1.zip(@data2) do |f1,f2| %>
          <tr>
            <td><%= f1&.company_borrower1&.name %></td>
            <td><%= f2&.company_borrower2&.name %></td>
          </tr>
        <% end %>

如果您使用的是ruby 2.3或更高版本,您可以使用安全导航操作符(&.)而不是尝试方法

        <% @data1.zip(@data2) do |f1,f2| %>
          <tr>
            <td><%= f1&.company_borrower1&.name %></td>
            <td><%= f2&.company_borrower2&.name %></td>
          </tr>
        <% end %>

你能告诉我们
@data1
@data2
是什么样子吗?那不是真正的代码。首先,我们在任何地方都看不到公司借贷者。二,。您不应该在循环中使用f1和f2而不是data1和data2吗?请提供一个例子,当我移动代码时,出现了一些错误-现在已编辑。你能给我们展示一下
@data1
@data2
的样子吗?那不是真正的代码。首先,我们在任何地方都看不到公司借贷者。二,。您不应该在循环中使用f1和f2而不是data1和data2吗?请提供一个例子,当我移动代码时出现了一些错误-现在编辑请注意我的代码是错误的(现在编辑),但即使您对我的代码进行了更改,它仍然返回“未定义的方法`company_borrower2'for nil:NilClass”请注意我的代码是错误的(现在编辑),但即使您对我的代码进行了更改,它仍然会返回“nil:NilClass的未定义方法`company\u lower2'”奇妙-谢谢:)奇妙-谢谢:)