从关联表中拔出滑轨

时间:2018-06-29 19:12:38

标签: ruby-on-rails associations ransack pluck

我有两个桌子 样本

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

示例表中有一个字段,我想通过对应于上面过滤的参数在丰富度视图中上拉种族。

我试图在视图中使用弹拨

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

但是我得到一个错误。不知道我是要正确使用还是语法错误。

谢谢!

1 个答案:

答案 0 :(得分: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(一个现有的样本),并且具有竞价值,那么这将起作用。