2009/6/4 Ruby on Rails: Talk <[email protected]>: > > Hi > > I have the following code: > > @lunchtimes = Lunchtime.find_by_dayname("#{todayname}") > for l in @lunchtimes do > # i = lunch.lunchfrom > # j = lunch.lunchto > # while i < j do > # id="#{session[:dateviewing]}/#{i.strftime('%H:%M:00')}/# > {lunch.therapist_id}" > # page[id].replace "<td class='lunch'><span > class='small'>LUNCH</span></td>" > # end > # i += 15.minutes > end > > I've put the hashes in to see where the code is failing BTW! > > All I'm trying to do is loop through the search results from > @lunchtimes. At the moment the query is returning only one record: > > => #<Lunchtime id: 4, therapist_id: 1, dayname: "Thursday", lunchfrom: > "2000-01-01 12:00:00", lunchto: "2000-01-01 13:00:00", effective: > "2009-06-04", created_at: nil, updated_at: nil> > > And, as such I'm getting the following error: > > NoMethodError (undefined method `each' for #<Lunchtime:0x21c1c70>): > /Library/Ruby/Gems/1.8/gems/activerecord-2.2.2/lib/active_record/ > attribute_methods.rb:260:in `method_missing' > /app/controllers/appointment_controller.rb:178:in > `__instance_exec0' > > With more than one returned search results it works ... >
I am not an expert in this but I understood that find_by_attribute returned only the first matching record, in which case the result would never be an array. If you want to get all of them then you should use find_all_by_attribute and the result will always be an array, possibly with only one element. I may well be wrong on this though. Colin --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---

