0

I have two tables sample

has_many :abundances
self.primary_key = :sample_id

and abundance

has_many :samples
self.primary_key = :sample_id

In abundances controller i have a ransack search

def index
@search = Abundance.ransack(params[:q])
@abundances = @search.result
@abundancez =  @abundances.paginate(:page => params[:page],:per_page => 100)
   end
end

in the abundances view, I have a filtered table based on the ransack parameters.

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

The sample table has a field, race that i want to pull up in the abundances view when via corresponding to the filtered parameters above.

Ive tried to use pluck in the view

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

but i get an error. Not sure if I'm going about this the right way or if I the syntax is incorrect.

Thanks!

Ahk86
  • 125
  • 1
  • 8
  • you want to show all values of race of all samples for that abundance? – xploshioOn Jun 29 '18 at 23:22
  • The abundances have a sample_id attached to them. The sample_id is the primary key in the sample table which has a race asscociated with that sample_id. Im trying to retrieve that race value for each abundance that appears in the ransack search above. – Ahk86 Jun 29 '18 at 23:33

1 Answers1

0

The thing here is that you defined that an abundance has_many samples, so you can't return the value of the race for one sample like you are doing here.

as you said in your comments, it seems that your associations are wrong, change your abundance model from has_may, to belongs_to

belongs_to :sample

and then on your view, you can return the race value like this

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

this because you said in the comments that abundances have a sample_id attribute, so abundance belongs_to a sample. of course this will work if abundance have the attribute of sample_id filled with a valid ID (an existing one sample) and of course, that it has a race value.

xploshioOn
  • 3,825
  • 2
  • 25
  • 34