2012-07-15 2 views
4

컨트롤러를 모델링하는패스 매개 변수는

내가 JSON 디스플레이에 상황을 타개하기 위해 as_json 기능 params[:id] 같은 parmeters를 전달하려는
def as_json(options = {}) 
    { 
    name: self.name, 
    ... 
    } 
end 

.

어떻게하면됩니까?

답변

5

음, as_json는 옵션 해시를 가지고 간다, 그래서 나는 그런 다음 as_json의 정의에 PARAMS을 참조 할 수있을 거라고 당신이

respond_with({:posts => @posts.as_json(:params => params)}) 

를 사용하여 호출 할 수도있을 것 같군요 :

def as_json(options = {}) 
    params = options[:params] || {} 
    { 
    name: self.name, 
    params_id: params[:id] 
    ... 
    } 
end 
+0

불행히도, 나는 이것이 작동한다고 생각하지 않습니다. ActiveSupport (atleast in rails4)는 특히 ActiveModel as_json에 옵션을 전달하지 않습니다. 여기를 참조하십시오 : https://github.com/rails/rails/blob/3762ee0baa2285bdc4a76d4d492fbe34a10cdc3a/activesupport/lib/active_support/json/encoding.rb#L299 - 다른 접근 방법이 있다면 궁금합니다. –

+0

죄송합니다, 명확히 설명해 드리겠습니다 : this 높은 수준의 객체에서 to_json을 호출하면 작동하지 않으며 직렬화되어 as_json이 호출되는 중첩 된 특성/객체가 있습니다. –