【发布时间】:2011-09-22 03:30:28
【问题描述】:
我有一个模型,统计,它有 6 个字符模型的统计数据。用户可以输入力量、智力等值。我编写了一种根据输入的分数自动计算奖金或处罚的方法。以下是体质加成的逻辑,来自我的统计模型:
def con_modifier
(constitution.to_i - 10) / 2
end
我在我的 Character 视图中显示从 Statistic 模型收集的信息,并且我想看到奖励,所以我在我的 Character 模型的 Show 方法中定义它,如下所示:
@con_modifier = @character.statistic.con_modifier
我可以在角色视图中毫无问题地查看它。但这是我的问题。我有另一个模型,Fortitude,它需要获取这个数字并使用它来计算 Fortitude 保存的总值。到目前为止,这就是我所拥有的:
def total
fortitude_base.to_i + @con_modifier + magic.to_i + misc.to_i
end
然后我得到这个错误:
nil can't be coerced into Fixnum
显然它没有调用正确的信息。有任何想法吗?我是否也需要在我的 Fortitude 控制器中定义它,或者我可以简单地在 Fortitude 模型中定义它并以这种方式在视图中调用它? Fortitude 正在我的 Character 视图中显示,所以我认为在 Character 模型的 Show 方法中定义这个逻辑会很简单,但是我这几天一直在努力解决这个问题,但没有任何进展。谢谢!
【问题讨论】:
-
您能发布您的模型和控制器的完整代码吗?很难清楚地了解这几条信息的情况。
-
@con_modifier is an action instance variable, and not available in your model. Why can't you just callcharacter.statistic.con_modifier`? -
感谢您的意见。我还没有将我当前的代码推送到 git,但是我今晚回家后会发布完整的代码。
标签: ruby-on-rails logic models controllers