Rails 从关联表中提取
Rails pluck from associated tables
我有两个table
样本
has_many :abundances
self.primary_key = :sample_id
和
丰度
has_many :samples
self.primary_key = :sample_id
在丰富的控制器中,我进行了搜查
def index
@search = Abundance.ransack(params[:q])
@abundances = @search.result
@abundancez = @abundances.paginate(:page => params[:page],:per_page => 100)
end
end
在丰度视图中,我有一个基于搜查参数的过滤 table。
<%= will_paginate @abundancez%>
<% @abundancez.each do |abundance| %>
<td><%= abundance.sample_id %><td>
<td><%= abundance.length %><td>
<td><%= abundance.eff_length%><td>
<td><%= abundance.est_counts%><td>
<td><%= abundance.tpm%><td>
<% end %>
示例 table 有一个字段,当通过对应于上面的过滤参数时,我想在丰度视图中提取它。
我试过在视图中使用 pluck
<%= will_paginate @abundancez%>
<% @abundancez.each do |abundance| %>
<td><%= abundance.sample_id %><td>
<td><%= abundance.length %><td>
<td><%= abundance.eff_length%><td>
<td><%= abundance.est_counts%><td>
<td><%= abundance.tpm%><td>
<td><%= samples.pluck(abundance.samples_id,:race)%></td>
但是我得到一个错误。不确定我是否以正确的方式解决这个问题,或者我的语法是否不正确。
谢谢!
这里的问题是你定义了丰度has_many个样本,所以你不能return一个样本的种族值就像你在这里做的那样。
正如您在评论中所说,您的联想似乎是错误的,将您的丰度模型从 has_may 更改为 belongs_to
belongs_to :sample
然后在您的视图中,您可以return这样的比赛值
<%= will_paginate @abundancez%>
<% @abundancez.each do |abundance| %>
<td><%= abundance.sample_id %><td>
<td><%= abundance.length %><td>
<td><%= abundance.eff_length%><td>
<td><%= abundance.est_counts%><td>
<td><%= abundance.tpm%><td>
<td><%= abundance.sample.race %></td>
这是因为您在评论中说丰度具有 sample_id 属性,所以丰度 belongs_to 是一个样本。当然,如果 abundance 具有 sample_id 的属性并填充了有效 ID(现有的一个样本),当然,它具有竞赛值,那么这将起作用。
我有两个table 样本
has_many :abundances
self.primary_key = :sample_id
和 丰度
has_many :samples
self.primary_key = :sample_id
在丰富的控制器中,我进行了搜查
def index
@search = Abundance.ransack(params[:q])
@abundances = @search.result
@abundancez = @abundances.paginate(:page => params[:page],:per_page => 100)
end
end
在丰度视图中,我有一个基于搜查参数的过滤 table。
<%= will_paginate @abundancez%>
<% @abundancez.each do |abundance| %>
<td><%= abundance.sample_id %><td>
<td><%= abundance.length %><td>
<td><%= abundance.eff_length%><td>
<td><%= abundance.est_counts%><td>
<td><%= abundance.tpm%><td>
<% end %>
示例 table 有一个字段,当通过对应于上面的过滤参数时,我想在丰度视图中提取它。
我试过在视图中使用 pluck
<%= will_paginate @abundancez%>
<% @abundancez.each do |abundance| %>
<td><%= abundance.sample_id %><td>
<td><%= abundance.length %><td>
<td><%= abundance.eff_length%><td>
<td><%= abundance.est_counts%><td>
<td><%= abundance.tpm%><td>
<td><%= samples.pluck(abundance.samples_id,:race)%></td>
但是我得到一个错误。不确定我是否以正确的方式解决这个问题,或者我的语法是否不正确。
谢谢!
这里的问题是你定义了丰度has_many个样本,所以你不能return一个样本的种族值就像你在这里做的那样。
正如您在评论中所说,您的联想似乎是错误的,将您的丰度模型从 has_may 更改为 belongs_to
belongs_to :sample
然后在您的视图中,您可以return这样的比赛值
<%= will_paginate @abundancez%>
<% @abundancez.each do |abundance| %>
<td><%= abundance.sample_id %><td>
<td><%= abundance.length %><td>
<td><%= abundance.eff_length%><td>
<td><%= abundance.est_counts%><td>
<td><%= abundance.tpm%><td>
<td><%= abundance.sample.race %></td>
这是因为您在评论中说丰度具有 sample_id 属性,所以丰度 belongs_to 是一个样本。当然,如果 abundance 具有 sample_id 的属性并填充了有效 ID(现有的一个样本),当然,它具有竞赛值,那么这将起作用。