Rails вырвать из связанных таблиц

У меня есть две таблицы образца

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 ответ

Решение

Дело в том, что вы определили, что изобилие сэмплов has_many, поэтому вы не можете вернуть значение гонки для одного сэмпла, как вы делаете здесь.

как вы сказали в своих комментариях, кажется, что ваши ассоциации ошибочны, измените вашу модель численности с has_may на own_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, заполненный действительным идентификатором (существующий один образец) и, конечно, что он имеет значение гонки.

Другие вопросы по тегам