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