Delete duplicate records from a 2 dimensional array in rails

Hello,

I am trying to insert elements into an array like this…

@mem = []@tran =
Transport.find_all_by_month_and_vehicle(date,vehicle)tran.each do |t|
@mem << [Student.find_by_id(t.mem_id), t.transport_date, vehicle.no]
if t.mem_type==“Student”
@mem << [Employee.find_by_id(t.mem_id), t.transport_date, vehicle.no]
if t.mem_type=="Employee"end

And in the view page I am looping and displaying it as

@mem.each do |m|

<%= link_to m[0].first_name} %> <%= m[0].age %> m[1] m[2] <%end%>

But I am getting duplicate entries in the table… So I neeed to remove
duplicates and display only unique values… I tries doing
@mem << [Student.find_by_id(t.mem_id), t.transport_date,
vehicle.no].uniq! if t.mem_type==“Student”… But it is not working…
Please help

@tran = Transport.where( date: date, vehicle: vehicle)
@mem = @tran.members

Iterate in view

@mem.each do |mem|
mem.name
mem.vehicle

Should work if you have the relations set up. You should go read one or
two tutorials about relations and how to set them up.

uniq can take a block as well if you wanted to unique similar arrays on
a specific element:

@mem.uniq { |mem| mem[1] }

Or even on multiple criteria:

@mem.uniq { |mem| [ mem[1], mem[2] ] }

Joel P. wrote in post #1121051:

uniq can take a block as well if you wanted to unique similar arrays on
a specific element:

@mem.uniq { |mem| mem[1] }

Or even on multiple criteria:

@mem.uniq { |mem| [ mem[1], mem[2] ] }

This was very helpful

Thank you

if you really need to do some processing that gets you an array with
duplicate entries and then clean the array at the end of it all. try
doing
something like

@mem = @mem.uniq

you can probably do @mem.uniq! but i’ve had some cases where that
didn’t
get me the results i wanted.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs