>>objecting to user.deals.keys
so yeah if I switch things up (and not iterate but rather define @user
as User.find(:first).  It works great for the first user in the array
perfectly well (code below).  Its just when I want to iterate over all
of the users that it becomes an issue

>>worked through some of the plethora of tutorials...
yeah - the tutorials are amazing and are what got me this far - I've
come to this discussion board as a last resort for this particular
piece of the app I'm working on.

Controller
def index
    @users = User.find :all, :order => 'name ASC'
    @user = User.find(:first)
    @user_groups = @user.deals.find(:all).group_by {|t|
t.saledate.at_beginning_of_month}
  end

View
<ul id="monthly-revs">
        <strong><li><%=h Time.now.year %></li></strong>
  <% @user_groups.keys.sort.each do |month| %>
    <li><%=h month.strftime('%B') %></li>
    <li><%=h number_to_currency(@user_groups[month].collect
(&:rev).sum, :precision => 0) %></li>
 <% end %>
</ul>

On Mar 4, 4:44 pm, Colin Law <[email protected]> wrote:
> OK, you don't need @deals = ...
>
> I guess it is objecting to user.deals.keys as user.deals is an array of
> Deals for that user.
>
> Can I ask whether you have worked through some of the plethora of tutorials
> on basic Rails?
>
> 2009/3/4 esdevs <[email protected]>
>
>
>
> > yes - the relationship is Deals belongs to User and User has many
> > Deals.  So I even changed the code accordingly (from deal_groups to
> > deals) per below...what's wierd is that now I am getting an error for
> > undefined method 'key's (also below)
>
> > Controller
> > def index
> >   �...@users = User.find :all, :order => 'name ASC'
> >     @deals = Deal.find(:all).group_by {|t|
> > t.saledate.at_beginning_of_month}
> >  end
>
> > View
> > <% for user in @users %>
> > <ul id="monthly-revs">
> >        <strong><li><%=h Time.now.year %></li></strong>
> >   <% user.deals.keys.sort.each do |month| %>
> >     <li><%=h month.strftime('%B') %></li>
> >     <li><%=h number_to_currency(user.deals[month].collect
> > (&:rev).sum, :precision => 0) %></li>
> >  <% end %>
> > </ul>
> > <% end %>
>
> > Error
> > NoMethodError in Users#index
>
> > Showing app/views/users/index.html.erb where line #19 raised:
>
> > undefined method `keys' for #<Class:0x217ed80>
> > Extracted source (around line #19):
>
> > 16: <% for user in @users %>
> > 17: <ul id="monthly-revs">
> > 18:     <strong><li><%=h Time.now.year %></li></strong>
> > 19:   <% user.deals.keys.sort.each do |month| %>
> > 20:     <li><%=h month.strftime('%B') %></li>
> > 21:     <li><%=h number_to_currency(user.deals[month].collect
> > (&:rev).sum, :precision => 0) %></li>
> > 22:  <% end %>
>
> > On Mar 4, 3:38 pm, Colin Law <[email protected]> wrote:
> > > Have you setup relationships between the models, User has many DealGroups
> > > and DealGroup belongs to User, or whatever is appropriate. Then you won't
> > > need @deal_groups and can use user.deal_groups as you originally wrote.
>
> > > 2009/3/4 esdevs <[email protected]>
>
> > > > ok so then I am where I am having difficulty is associating the user
> > > > with the deal and displaying each user's deals.  So for example, if I
> > > > change the code to the below, then it displays the total sum month to
> > > > month as opposed to sum of each user month to month.
>
> > > > View
> > > > <% for user in @users %>
> > > > <ul id="monthly-revs">
> > > >        <strong><li><%=h Time.now.year %></li></strong>
> > > >   <% @deal_groups.keys.sort.each do |month| %>
> > > >     <li><%=h month.strftime('%B') %></li>
> > > >     <li><%=h number_to_currency(@deal_groups[month].collect
> > > > (&:rev).sum, :precision => 0) %></li>
> > > >  <% end %>
> > > > </ul>
> > > > <% end %>
>
> > > > Controller (is the same as above)
> > > > def index
> > > >   �...@users = User.find :all, :order => 'name ASC'
> > > >   �...@deal_groups = Deal.find(:all).group_by {|t|
> > > > t.saledate.at_beginning_of_month}
> > > >  end
>
> > > > On Mar 4, 11:48 am, Colin Law <[email protected]> wrote:
> > > > > You appear to be setting up @deal_groups then not using it. You are
> > using
> > > > > user.deal_groups instead, which the error suggests is not defined.
>
> > > > > 2009/3/4 esdevs <[email protected]>
>
> > > > > > so I am trying to sum month over month the amount that a user has
> > > > > > posted.  So for example:
> > > > > > User 1: Jan $3000 Feb $4000 March $1500, etc.  I can get this to
> > work
> > > > > > if I sum totals (aggregate of all users) but just not by user.
>
> > > > > > Here is my code in the controller:
>
> > > > > > def index
> > > > > >   �...@users = User.find :all, :order => 'name ASC'
> > > > > >   �...@deal_groups = Deal.find(:all).group_by {|t|
> > > > > > t.saledate.at_beginning_of_month}
> > > > > >  end
>
> > > > > > And then the code in the View
> > > > > > <% for user in @users %>
> > > > > > <ul id="monthly-revs">
> > > > > >        <strong><li><%=h Time.now.year %></li></strong>
> > > > > >  <% user.deal_groups.keys.sort.each do |month| %>
> > > > > >    <li><%=h month.strftime('%B') %></li>
> > > > > >    <li><%=h number_to_currency(user.deal_groups[month].collect
> > > > > > (&:rev).sum, :precision => 0) %></li>
> > > > > >  <% end %>
> > > > > > </ul>
> > > > > > <% end %>
>
> > > > > > Ultimately, I want to make this a partial but for now am getting
> > the
> > > > > > following error
>
> > > > > > NoMethodError in Users#index
>
> > > > > > Showing app/views/users/index.html.erb where line #19 raised:
>
> > > > > > undefined method `deal_groups' for #<User:0x2200114>
> > > > > > Extracted source (around line #19):
>
> > > > > > 16: <% for user in @users %>
> > > > > > 17: <ul id="monthly-revs">
> > > > > > 18:     <strong><li><%=h Time.now.year %></li></strong>
> > > > > > 19:   <% user.deal_groups.keys.sort.each do |month| %>
> > > > > > 20:     <li><%=h month.strftime('%B') %></li>
> > > > > > 21:     <li><%=h number_to_currency(user.deal_groups[month].collect
> > > > > > (&:rev).sum, :precision => 0) %></li>
> > > > > > 22:   <% end %>
>
> > > > > > Thanks in advance
>
> > > > > > esdevs
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to