2011-09-21 3 views
0

Character Model에 대해 6 개의 통계가있는 Statistic 모델이 있습니다. 사용자는 힘, 지능 등에 대한 값을 입력 할 수 있습니다. 입력 한 점수에 따라 보너스 또는 벌칙을 자동으로 계산하는 방법을 작성했습니다. 다음은 헌법 보너스에 대한 논리 내 통계 모델에서의 : 내 문자보기에서 통계 모델에서 수집 한 정보를 표시, 나는 보너스를보고 싶어한 모델의 로직을 레일스에서 ​​다른 모델의 뷰로 표시합니까?

def con_modifier 
    (constitution.to_i - 10)/2 
end 

, 그래서 표시 방법을 정의 내 캐릭터 모델에 이렇게 :

@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 

를 올바른 정보를 호출하지 않습니다. 어떤 아이디어? Fortitudes 컨트롤러에서도 정의해야합니까? 아니면 단순히 Fortitude 모델에서 정의하고이를 뷰에서 호출 할 수 있습니까? Fortitude가 내 Character 뷰에 표시되기 때문에 Character 모델의 Show 메서드에서이 논리를 정의하는 것이 간단 할 것이라고 생각했지만 지금은 아무런 진전없이이 문제에 대한 내 머리를 두근 거리고 있습니다. 감사!

+2

당신이 당신의 모델과 컨트롤러의 전체 코드를 게시 할 수 있을까요? 이 정보로 어떤 일이 벌어지고 있는지 명확하게 알기는 어렵습니다. –

+1

'@con_modifier는 액션 인스턴스 변수이며 모델에서는 사용할 수 없습니다. 왜'character.statistic.con_modifier'를 호출 할 수 없습니까? –

+0

입력 해 주셔서 감사합니다. 나는 현재 코드를 git로 푸시하지 않았지만, 오늘 저녁에 집에 올 때 전체 코드를 게시 할 것이다. – illbzo1

답변

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) 
관련 문제