2014-03-13 2 views
0

json 요청에 가상 속성 인 포인트의 이름을 추가하려고합니다.매개 변수가있는 모델에서 as_json 레일즈 덮어 쓰기

문제는 데이터베이스의 올바른 이름을 얻으려면 사용자의 language_id가 필요하다는 것입니다.

"as_json 덮어 쓰기"매개 변수가있는 메소드를 호출 할 수있는 스 니펫을 찾을 수 없습니다.

이 내 현재 코드 :

# Adds the name of the point when query is json 
def as_json(options={}) 
    super.as_json(options).merge({:name => name(language_id)}) 
end 

# Returns the name of the point regarding the column in use in this project. 
def name(language_id) 
    @name ||= get_point_name(language_id) 
end 

내가 얻을 중 하나

  • 인수 잘못된 번호 (1 0), 나는 매개 변수를 제거하면
  • 정의되지 않은 지역 변수 또는 메소드` 매개 변수를 남겨두면 #에 대한 column_id '입니다.

무엇이 작동하는지, la nguage_id를 그 값 (정수 80)으로 나눕니다. 이런 식으로, 나는 정확한 언어로 나의 요점 이름을 얻는다 ...

나는 내 컨트롤러/뷰에서 일반적으로 사용하는 전역 메소드 current_language를 호출하려고 시도했으나 호출 할 수 없다. 난 당신이 물건을 많이하고 있다면 사용자 정의 직렬로 이동해야한다고 생각

답변

1

을 돕는

들으 :-(모델에서 이러한 글로벌 방법, ActiveModel::Serializers를 참조하십시오.

을하지만, 당신은 할 수 #as_json 재정의 올바른 이름을 반환하는 메소드를 포함하십시오.

super({:methods => [:name]}.merge(options)) 
관련 문제