0

我有两张桌子样本

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

在丰度视图中,我有一个基于 ransack 参数的过滤表。

<%= 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 %>

示例表有一个字段,当通过对应于上面过滤的参数时,我想在丰度视图中拉出比赛。

我尝试在视图中使用 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>

但我得到一个错误。不确定我是否以正确的方式进行此操作,或者我的语法是否不正确。

谢谢!

4

1 回答 1

0

这里的问题是您定义了丰富的has_many样本,因此您不能像在此处所做的那样返回一个样本的比赛值。

正如您在评论中所说,您的关联似乎是错误的,将您的丰度模型从 has_may 更改为 belongs_to

belongs_to :sample

然后在您看来,您可以像这样返回比赛值

<%= 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 属性,因此丰度属于样本。当然,如果丰度的 sample_id 属性填充了一个有效的 ID(现有的一个样本),当然这将起作用,当然,它有一个竞争值。

于 2018-06-29T23:40:47.027 回答