As an alternative to @Beat Richartz's answer - not because it's wrong but because there are lots of alternatives…
1. Helpers
Helpers are available in templates. e.g.
helpers do
def mailbox_stats
@mailbox_stats ||= {
:inbox_count => Inbox.count
:sent_count => Outbox.all(:processed => 1).count
:scheduled_count => Outbox.all(:error => -1).count
:errored_count => Outbox.all(:error.not => [-1,0])
}
end
end
and in the template:
<h2>Status</h2>
<ul>
<li>Received<span><%= mailbox_stats[:inbox_count] %></span></li>
<li>Sent<span><%= mailbox_stats[:sent_count] %></span></li>
<li><Scheduled<span><%= mailbox_stats[:scheduled_count] %></span></li>
<li>Error<span><%= mailbox_stats[:errored_count] %></span></li>
</ul>
2. Settings
Settings probably aren't the best idea for this situation, but it can be done, maybe if you wanted to set some defaults:
config do
set :mailbox_stats, {
:inbox_count => 0
:sent_count => 0
:scheduled_count => 0
:errored_count => 0
}
end
before do
if @user.has? :inbox # or something relevant
settings.mailbox_stats.replace( {
:inbox_count => Inbox.count
:sent_count => Outbox.all(:processed => 1).count
:scheduled_count => Outbox.all(:error => -1).count
:errored_count => Outbox.all(:error.not => [-1,0])
})
end
end
<h2>Status</h2>
<ul>
<li>Received<span><%= settings.mailbox_stats[:inbox_count] %></span></li>
<li>Sent<span><%= settings.mailbox_stats[:sent_count] %></span></li>
<li><Scheduled<span><%= settings.mailbox_stats[:scheduled_count] %></span></li>
<li>Error<span><%= settings.mailbox_stats[:errored_count] %></span></li>
</ul>
3. Local variables
get('/or_so') do
erb :your_template, :locals => { :mailbox_stats => {
:inbox_count => Inbox.count
:sent_count => Outbox.all(:processed => 1).count
:scheduled_count => Outbox.all(:error => -1).count
:errored_count => Outbox.all(:error.not => [-1,0])
}
}
end
in the template:
<h2>Status</h2>
<ul>
<li>Received<span><%= mailbox_stats[:inbox_count] %></span></li>
<li>Sent<span><%= mailbox_stats[:sent_count] %></span></li>
<li><Scheduled<span><%= mailbox_stats[:scheduled_count] %></span></li>
<li>Error<span><%= mailbox_stats[:errored_count] %></span></li>
</ul>
I'd probably use a helper.