我有一个模型Statistic,它有一个Character模型的6个统计数据。用户可以输入力量,智力等值。我写了一种根据输入的分数自动计算奖金或罚款的方法。以下是我的统计模型中宪法奖金的逻辑:
def con_modifier
(constitution.to_i - 10) / 2
end
我在我的角色视图中显示从统计模型收集的信息,我想看到奖金,所以我在我的角色模型中的Show方法中定义了它,如下所示:
@con_modifier = @character.statistic.con_modifier
我可以在角色视图中查看它而没有任何问题。但这是我的问题。我有另一个模型,强韧,它需要取这个数字并用它来计算强韧豁免的总价值。到目前为止,这就是我所拥有的:
def total
fortitude_base.to_i + @con_modifier + magic.to_i + misc.to_i
end
但后来我收到了这个错误:
nil can't be coerced into Fixnum
显然,它没有调出正确的信息。有任何想法吗?我是否还需要在Fortitude控制器中定义它,或者我可以简单地在Fortitude模型中定义它并在视图中调用它吗? “坚韧”正在我的角色视图中显示,所以我认为在角色模型中的Show方法中定义这个逻辑只会起作用,但是我现在已经对这个问题进行了几天的攻击,没有任何进展。谢谢!
答案 0 :(得分:2)
将修饰符作为参数传递:
def total(con_mod)
fortitude_base.to_i + con_mod + magic.to_i + misc.to_i
end
然后在别处使用它:
@fortitude = Fortitude.whatever
@saving_throw = @fortitude.total(@character.statistic.con_modifier)