Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails的视图中显示来自一个模型的逻辑?_Ruby On Rails_Logic_Models_Controllers - Fatal编程技术网

Ruby on rails 在Rails的视图中显示来自一个模型的逻辑?

Ruby on rails 在Rails的视图中显示来自一个模型的逻辑?,ruby-on-rails,logic,models,controllers,Ruby On Rails,Logic,Models,Controllers,我有一个模型,统计,一个角色模型有6个统计。用户可以输入强度、智能等值。我已经写了一个根据输入的分数自动计算奖金或罚款的方法。根据我的统计模型,以下是体质奖金的逻辑: def con_modifier (constitution.to_i - 10) / 2 end 我在我的角色视图中显示从统计模型收集的信息,我想看到奖金,因此我在我的角色模型中的Show方法中定义了奖金,如下所示: @con_modifier = @character.statistic.con_modifier 我可

我有一个模型,统计,一个角色模型有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

所以很明显,它没有调用正确的信息。有什么想法吗?我是否也需要在我的Fortitudes控制器中定义它,或者我可以简单地在Fortitude模型中定义它,并以这种方式在视图中调用它?坚韧在我的角色视图中显示,所以我认为在角色模型中的Show方法中定义这个逻辑很简单,但是我已经针对这个问题苦思冥想了几天,没有任何进展。谢谢

将修饰符作为参数传递:

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)

你能发布你的模型和控制器的完整代码吗?这几条信息很难清楚地说明发生了什么。
@con_modifier是一个动作实例变量,在您的模型中不可用。为什么不能直接调用
character.statistic.con_修饰符“?谢谢您的输入。我还没有把我当前的代码推到git上,但我今晚回家后会发布完整的代码。