2012-04-09 2 views
0

У меня есть следующий .erb вид в приложение Sinatra:Как выполнить встроенные вычисления по двум переменным в файле .erb?

<% sessions.each do |session| %> 
    <%= session.balance_beginning %> 
    <%= session.balance_ending %> 
<% end %> 

Он работает, как ожидалось, показывая начало и конец периода, записанные для каждой сессии. Я хотел бы рассчитать чистые балансы из файла .erb, но я не могу понять, как это сделать. Я пробовал следующие варианты:

<% sessions.each do |session| %> 
    <%= session.balance_ending - session.balance_beginning %> 
<% end %> 

Это не работает. Я получаю следующую ошибку в Sinatra:

undefined method `-' for nil:NilClass 

Как мне сделать то, что я пытаюсь сделать?

+3

Во-первых, не выполняйте вычисления в виде - извлеките их помощнику. Во-вторых, 'session.balance_ending' -' nil', таким образом, ошибка. – Zabba

+0

Должен быть ответ;) – d11wtq

+1

@ d11wtq: И отмечая, что 'nil.to_i' равно нулю, это сделало бы его еще лучше. –

ответ

3

Справа @Zabba, в этом случае, я думаю, вы добавили бы метод в свою модель сеанса, чтобы вы могли вызвать session.net_balance.

Затем в методах balance_ending и balance_beginning вы хотели бы обрабатывать nil, либо поднимать ошибку, либо возвращать ноль, если это действительно так.

Смежные вопросы