최신 정보:
이 문제는 제대로 조사되지 않았습니다. 진짜 문제는 render :json
.
원래 질문의 첫 번째 코드 붙여 넣기는 예상 결과를 산출합니다. 그러나 여전히 경고가 있습니다. 이 예를 참조하십시오.
render :json => current_user
이다 NOT 과 동일
render :json => current_user.to_json
즉 , User 개체와 연결된 메서드를 render :json
자동으로 호출하지 않습니다 to_json
. 실제로 모델에서 to_json
재정의되는 경우 아래 에 설명 된 내용이 생성 됩니다.User
render :json => @user
ArgumentError
요약
# works if User#to_json is not overridden
render :json => current_user
# If User#to_json is overridden, User requires explicit call
render :json => current_user.to_json
이 모든 것이 나에게는 어리석은 것 같습니다. 이것은 유형 이 지정 될 때 render
실제로 호출되지 않는다는 것을 알려주는 것 같습니다 . 누군가 여기서 실제로 무슨 일이 일어나고 있는지 설명 할 수 있습니까?Model#to_json
:json
이 문제를 해결할 수있는 모든 genii는 다른 질문에 답할 수 있습니다. Rails에서 @ foo.to_json (options) 및 @ bars.to_json (options)을 결합하여 JSON 응답을 빌드하는 방법
원래 질문 :
나는 다른 몇 가지 예를 보았지만 내가 찾고있는 것을하지 않습니다.
노력하고있어:
class User < ActiveRecord::Base
# this actually works! (see update summary above)
def to_json
super(:only => :username, :methods => [:foo, :bar])
end
end
나는 얻고 ArgumentError: wrong number of arguments (1 for 0)
에서
/usr/lib/ruby/gems/1.9.1/gems/activesupport-2.3.5/lib/active_support/json/encoders/object.rb:4:in `to_json
어떤 아이디어?
username
방법 및되지 않습니다 foo
및 bar
방법을 필요로하지 않는다. 오류가 발생한 위치를 표시하기 위해 질문을 업데이트했습니다.
username
,foo
또는bar
방법은 인수를 기대?