Hi,

On Fri, Feb 5, 2016, at 00:30, John Sanderbeck wrote:
> I am new to Rails and Ruby and am having a difficult time building the
> data needed for a Highchart. I am struggling with the syntax to map a
> pair of hashes to an array. Let me try and explain:
> 
> I have a table of "initiatives" which contains basically an ID and a
> Name.
> 
> Then I have a table "trainings" that has the initiative_id field to map
> to the initiative table
> 
> What I am trying to do is create a method that pulls the Initiative name
> and the count of records from the trainings, and returns an array with
> [[name,count],[name,count]]
> 
> What I have been trying is this
> 
> def training_count_by_initiative()
>   initiative_name = Initiative.all.select("id,name")
>   training_count = Training.group(:initiative_id).count
>   initiative_name.map do |initiative|
>     ??? This is the part I am struggling with
>   end
> end
> 
> I tried following Railscasts #223 but can't seem to get the mapping to
> work.
> 


You want the map to return an array with content of [name, count]

So you need to get name and count from inside the map.

`initiative` variable already contains the name so the first part of
array is simple, it's just `initiative.name` (`[initiative.name, ...]`).

And as for the count, it's inside `training_count`. The query you have
should return a hash with structure `{:id => :count}`. To access count
of each id, it's just `training_count[<insert_id>]`. In same spirit with
previous part, `training_count[initiative.id]` should do the trick.

Combined, all you need is one line of `[initiative.name,
training_count[initiative.id]]`.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/1454600848.4121194.511985170.29B9C166%40webmail.messagingengine.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to