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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
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 <seanpdevlin-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>> > 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
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
<clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org>
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 <seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>
>
>
> > 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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
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 <seanpdevlin-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>> > 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 <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> 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 <seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > > > > > > > > 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
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
<clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org>
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 <seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>
>
>
> > 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
<clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> 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
<seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>
> > > > 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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
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 <seanpdevlin-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>> > 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 <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> 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 <seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > > > > > > > > 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 <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> 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 <seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > > > > > > 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
>>objecting to user.deals.keysso 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 <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> 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 <seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > > > > 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 <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> 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 <seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > > > > 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 <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> 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 <seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > > > > > > 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
2009/3/4 esdevs <seanpdevlin-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>> > >>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 issueYou need <% for user in @users %> as you originally had to select each user, but then user.deals will give you an array of Deals for that user which you can then process. There is no need to do @user.deals.find(). Unless I am missing something. I would suggest getting it going to the point that you can see the deals ok without worrying about the grouping for the moment. Then add the grouping which I think is just processing of the user.deals array.> > >>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 <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> 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 <seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > > > > > > > > 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 <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> 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 <seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > > > > > > 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 <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> 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 <seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > > > > > > > > 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
right - so I could do something like <% for user in @users%> <%= user.deals.collect(&:rev).sum%> <% end %> which gives the total sum of deals (but not yet iterated through months which is then the goal)...I''ll keep working on it unless you see something very obvious -- by the way thanks for all of your insight On Mar 4, 5:23 pm, Colin Law <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote:> 2009/3/4 esdevs <seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > > > > >>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 > > You need > <% for user in @users %> > as you originally had to select each user, but then user.deals will give you > an array of Deals for that user which you can then process. There is no > need to do @user.deals.find(). Unless I am missing something. I would > suggest getting it going to the point that you can see the deals ok without > worrying about the grouping for the moment. Then add the grouping which I > think is just processing of the user.deals array. > > > > > >>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 <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> 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 <seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > > > > 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 <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> 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 <seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > > > > > > 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 <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> 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 <seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > > > > > > > > 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
You might look at the methods that Active Record provides for this.
* http://api.rubyonrails.org/classes/ActiveRecord/Calculations/ClassMethods.html
ie. : Person.sum(''age'') # => 4562
Cheers,
Robby
On Wed, Mar 4, 2009 at 3:42 PM, esdevs
<seanpdevlin-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:>
> right - so I could do something like
> <% for user in @users%>
> <%= user.deals.collect(&:rev).sum%>
> <% end %>
>
> which gives the total sum of deals (but not yet iterated through
> months which is then the goal)...I''ll keep working on it unless
you
> see something very obvious -- by the way thanks for all of your
> insight
>
> On Mar 4, 5:23 pm, Colin Law
<clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote:
>> 2009/3/4 esdevs
<seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>>
>>
>>
>> > >>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
>>
>> You need
>> <% for user in @users %>
>> as you originally had to select each user, but then user.deals will
give you
>> an array of Deals for that user which you can then process. There is
no
>> need to do @user.deals.find(). Unless I am missing something. I would
>> suggest getting it going to the point that you can see the deals ok
without
>> worrying about the grouping for the moment. Then add the grouping
which I
>> think is just processing of the user.deals array.
>>
>>
>>
>> > >>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
<clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> 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
<seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>>
>> > > > 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
<clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> 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
<seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>>
>> > > > > > 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
<clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> 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
<seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>>
>> > > > > > > > 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
> >
>
--
Robby Russell
Chief Evangelist, Partner
PLANET ARGON, LLC
design // development // hosting w/Ruby on Rails
http://planetargon.com/
http://robbyonrails.com/
http://twitter.com/planetargon
aim: planetargon
+1 503 445 2457
+1 877 55 ARGON [toll free]
+1 815 642 4068 [fax]
--~--~---------~--~----~------------~-------~--~----~
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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
ok - I have made forward progress - thanks for all of your help On Mar 4, 6:57 pm, Robby Russell <ro...-/Lcn8Y7Ot69QmPsQ1CNsNQ@public.gmane.org> wrote:> You might look at the methods that Active Record provides for this. > > *http://api.rubyonrails.org/classes/ActiveRecord/Calculations/ClassMet... > > ie. : Person.sum(''age'') # => 4562 > > Cheers, > Robby > > > > > > On Wed, Mar 4, 2009 at 3:42 PM, esdevs <seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > right - so I could do something like > > <% for user in @users%> > > <%= user.deals.collect(&:rev).sum%> > > <% end %> > > > which gives the total sum of deals (but not yet iterated through > > months which is then the goal)...I''ll keep working on it unless you > > see something very obvious -- by the way thanks for all of your > > insight > > > On Mar 4, 5:23 pm, Colin Law <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote: > >> 2009/3/4 esdevs <seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > >> > >>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 > > >> You need > >> <% for user in @users %> > >> as you originally had to select each user, but then user.deals will give you > >> an array of Deals for that user which you can then process. There is no > >> need to do @user.deals.find(). Unless I am missing something. I would > >> suggest getting it going to the point that you can see the deals ok without > >> worrying about the grouping for the moment. Then add the grouping which I > >> think is just processing of the user.deals array. > > >> > >>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 <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> 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 <seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > >> > > > 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 <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> 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 <seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > >> > > > > > 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 <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> 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 <seanpdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > >> > > > > > > > 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 > > -- > Robby Russell > Chief Evangelist, Partner > > PLANET ARGON, LLC > design // development // hosting w/Ruby on Rails > > http://planetargon.com/http://robbyonrails.com/http://twitter.com/planetargon > aim: planetargon > > +1 503 445 2457 > +1 877 55 ARGON [toll free] > +1 815 642 4068 [fax]--~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---