显示关联数据的最佳方式是什么?
问题描述:
我有3种型号,基因型,Gmarkers和G样本,以下列方式相关联:显示关联数据的最佳方式是什么?
class Genotype < ActiveRecord::Base
attr_accessible :allele1, :allele2, :run_date
belongs_to :gmarkers
belongs_to :gsamples
end
class Gmarker < ActiveRecord::Base
attr_accessible :marker
has_many :genotypes, :dependent => :delete_all
end
class Gsample < ActiveRecord::Base
attr_accessible :box, :labid, :subjectid, :well
belongs_to :gupload
has_many :genotypes, :dependent => :delete_all
end
当我显示Gentypes(在index.html.erb)的列表,我显示相关数据以下列方式:
<% @genotypes.each do |f| %>
<tr>
<td><%= Gmarker.find(f.gmarkers_id).marker %></td>
<td><%= Gsample.find(f.gsamples_id).labid %></td>
<td><%= f.allele1 %></td>
<td><%= f.allele2 %></td>
<td><%= f.run_date %></td>
<td><%= link_to 'Show', f %></td>
<td><%= link_to 'Edit', edit_genotype_path(f) %></td>
<td><%= link_to 'Destroy', f, confirm: 'Are you sure?', method: :delete %></td>
</tr>
<% end %>
然而,页面需要一段时间来加载,所以我不知道是否有没有做每环两个查找,显示相关的数据更简单的方法。我找不到任何相关的数据显示了使用类似内置引用Rails的风格:
f.GMarker.first.marker
但每当我尝试在控制台中,我得到的错误的转换开始
NameError: uninitialized constant Genotype::Gmarkers
我不明白乳清控制台不知道Gmarkers,因为在他们的模型之间的一个一对多的关系....
任何帮助,非常感谢!
--Rick
答
在你的基因型类,你belongs_to的声明更改为:
belongs_to :gmarker
belongs_to :gsample
然后在您的视图(index.html.erb),将以下代码:
<td><%= Gmarker.find(f.gmarkers_id).marker %></td>
<td><%= Gsample.find(f.gsamples_id).labid %></td>
这一个:
<td><%= f.gmarker.marker %></td>
<td><%= f.gsample.labid %></td>