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'”奇妙-谢谢:)奇妙-谢谢:)