2012-04-06 3 views
1

내 json 데이터의 서식을 지정하는 사용자 지정 방법이 포함됩니다.컨트롤러에서 Ruby on Rails의 Model 메소드에 인수를 전달하는 방법은 무엇입니까?

내 컨트롤러는 다음과 같습니다

("def" is taken out for brevity sake) 

respond_to do |format| 
    format.json { render json: @user, :methods => [:follower_count(params[:id])] } 
end 

내 모델은 다음과 같습니다

def follower_count user_id 
    User.find(user_id).friendships.count 
    end 

그러나,이 예기치 않은 '('구문 오류가 발생 난

. 컨트롤러에서 follower_count 메서드에 인수를 전달하는 방법을 잘 모르겠습니다. 사각형으로 래핑을 시도했습니다. 작동하지 않았습니다. 대괄호를 사용하지 않았지만 여전히 작동하지 않습니다. 인수를 어떻게 전달합니까?

답변

2

구문 오류는 기호 :follower_count을 함수로 사용하려고한다는 것을 알려줍니다. 하지만 주된 질문은 User 클래스의 모든 인스턴스 메서드에서 @id으로 사용할 수있는 경우 user_id을 인스턴스 메서드에 전달하는 이유입니다.

# controller 
format.json { render json: @user, :methods => [:follower_count] } 

# User.rb 
def follower_count 
    friendships.count 
end 
+0

와우 :

올바른 코드는 다음과 같이 보입니다. Touche - 훨씬 쉬워! 모델의 메서드가 현재 사용자에 대해 이미 범위가 지정되었음을 알지 못했을 것입니다. 감사. –

+1

하지만 메서드 이름과 함께 인수를 전달하려면 어떻게해야합니까? 이 개체는 모델을 통해 액세스 할 수 없으므로 요청 개체를 전달하고 싶습니다. – inquisitive