Help with inject, using hash array...

I can't quite figure out how to set up the inject command to do what I
want. (or if it's even possible)

What I'm trying to do:

Create a list of categories from a search of the items table. Count how
many of each category appeared, and output that to the view.

This is the code I have so far:

@categories = @items.collect{|item| ["name"=>item.category.name,

?> "id"=>item.category.id]}
=> [[{"name"=>"Cat 1", "id"=>1}], [{"name"=>"Cat 2", "id"=>2}],
[{"name"=>"Cat 2", "id"=>2}], [{"name"=>"Cat 3", "id"=>3}]]

I'm trying to use a modified version of this > list.inject(Hash.new(0))
{ |h, x| h[x] += 1; h}< to create a @categories containing "name", "id"
and "count".

This is a sample of many things I have tried. (I clearly don't
understand how this command works)

@categories.inject(Hash.new(0)) {|cat| ["name"=>cat.name, "id"=>cat.id,
"count"=>cat.count += 1]}

Any help appreciated.

Lance

At this point, I'm guessing that the collect statment isn't getting the
data in a useful format.....

Any Ideas?

try

@category_counts = Hash.new(0)
@items.collect { |item| item.category }.each { |cat|
@category_counts[cat.name] += 1 }

this will give you something like

{"cat1" => 3, "cat2" => 5, "cat3" => 10}

in @category_counts

Thanks for the input.

Tried using that, and my

@categories = @items.collect{|item| ["name"=>item.category.name,
                                            "id"=>item.category.id]}

Code with this view code:

<% if @categories -%>
    <% @categories.each do |cat| %>
    <p><a href="search?cat=<%= cat.id %>" class="leftnav"> &nbsp;<%=
cat.name %></a>
       <% if @category_counts -%>
           <%= @category_counts[cat.name]%>
        <% end -%>
        </p>
    <% end %>
<% end -%>

And as I suspected my @categories if not properly formated... :frowning:
I have sofar been unable to format it anyother way...

Thank you for a very clear explination of how inject works.

I'm sure it will be of help, after I figure out how to fix my collect
problem.