2011-08-04 7 views
2

안녕 레일은 새내기 여기 있습니다.Ruby : 변수 범위 질문

이전에는 컨트롤러 중 하나에서 많은 일들이 일어 났었습니다. 누군가는 "뚱뚱한 모델과 얇은 컨트롤러"를 사용하는 것은 좋은 습관이라고 말했기 때문에 모델로 이동하고있었습니다.

내 컨트롤러의 show 메서드에서 필자는 필자가보기에 @ 변수를 사용했습니다. 이제는 모델에있는 메소드에 해당 변수가 있습니다. 제 견해에있는 사람들에게 여전히 접근 할 수 있습니까? 그렇다면 조정해야합니까?

감사합니다.

답변

5

컨트롤러의 모델 인스턴스를 @ 변수로 만들어야합니다. 그런 다음보기 내부에서 메소드를 호출 할 수 있습니다.

당신이

@credit_score = credit_score 

에서 남중 고객에 대한 신용 점수를 계산하고 이제 Customer 모델에 credit_score 방법으로이 문제를 이동 한 어떤 컨트롤러 로직의 일부 긴 무리를하는 데 사용 상상한다.

이제 막 컨트롤러

@customer = Customer.find... 

을 필요로 할 수 있습니다 뷰 내에서 사용 <%= @customer.credit_score %>.

지방 모델과 얇은 컨트롤러의 의미입니다. 더 많은 조언을 원한다면 앱의 일부 세부 사항으로 질문을 업데이트하는 것이 가장 좋습니다.

0

일반적인 방법은 컨트롤러에서 이런 종류의 변수를 정의하는 것입니다

@object = Model.new 

나중에 그런 form_for 또는 무언가에서 사용할 수 있습니다. 어떤 사람들은 대신 Model.new을보기에 직접 사용합니다. 이는 다소 이상한 일이지만 여전히 의미가 있습니다. 특히 Rails가 사용자의 뷰에서 사용할 수 있도록하기 위해 매번 컨트롤러의 모든 인스턴스 변수를 반복합니다.