First I assumed, that the quantity of images in table will be
constant.
But later the problem has become complicated ( for me as newbie ),
because I’ve added the field ‘date_end’, so that banner can expire.
It means, that the quantity of images varies, and a very simple
looping through id in table does not give the solution.
Because as result of executing code
@banners = Banner.find(@counter, :conditions => [‘date_end > ?’,
Time.now.strftime("%Y-%m-%d %H:%M:%S")])
i has error like ‘Could not find record with id = X and Date_end >
Today’
I tried @banners.nil? and similar statements (blank, empty), but with
no success. I think, this is because the error occures before the
@banners became some value or nil at all.
As my first post says, banners table has fields ‘id’, ‘image’, and
‘url’.
At this time process works this way:
in environment.rb i’ve added the Counter class as Peter E.
suggested.
class Counter
@@counter = 0
def self.increment_cnt
@@counter += 1
end
def self.toone_cnt
@@counter = 1
end
end
in controller that manages banners:
def self.banner
@counter = Counter.increment_cnt
@banners = Banner.find(:all,
:conditions => [‘date_end > ?’, Time.now.strftime("%Y-%m-%d %H:%M:
%S")])
if @counter > @banners.size then
@counter = 1
Counter.toone_cnt
end
[[@banners[@counter-1].image] , [@banners[@counter-1].url]]
end
in layout
<% banner = BannersController.banner %>
<%= link_to image_tag(banner[0].to_s ), banner[1].to_s %>
So, this way i do not loop through ids of records in tables, but
through elements of @banners array. Elements are in fact ActiveRecord
objects, it doesn’t matter what ids they had