Güncelleme:
Bu sorun doğru bir şekilde araştırılmadı. Asıl mesele içeride yatıyor render :json
.
Orijinal sorudaki ilk kod yapıştırması beklenen sonucu verecektir. Ancak yine de bir uyarı var. Bu örneğe bakın:
render :json => current_user
ile aynı DEĞİLDİR
render :json => current_user.to_json
Yani, Kullanıcı nesnesiyle ilişkili yöntemi render :json
otomatik olarak çağırmaz to_json
. Aslında , model to_json
üzerinde geçersiz kılınmışsa, aşağıda açıklananları üretecektir .User
render :json => @user
ArgumentError
özet
# 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
Bunların hepsi bana aptalca geliyor. Görünüşe göre bu render
, Model#to_json
tip :json
belirtildiğinde aslında arama olmadığını söylüyor . Biri burada gerçekte neler olduğunu açıklayabilir mi?
Bu konuda bana yardımcı olabilecek herhangi bir cin muhtemelen diğer sorumu yanıtlayabilir: Rails'te @ foo.to_json (seçenekler) ve @ bars.to_json (seçenekler) birleştirilerek nasıl bir JSON yanıtı oluşturulur?
Orijinal Soru:
SO'da başka örnekler de gördüm, ama hiçbiri aradığımı yapmıyorum.
Deniyorum:
class User < ActiveRecord::Base
# this actually works! (see update summary above)
def to_json
super(:only => :username, :methods => [:foo, :bar])
end
end
Ben alıyorum ArgumentError: wrong number of arguments (1 for 0)
içinde
/usr/lib/ruby/gems/1.9.1/gems/activesupport-2.3.5/lib/active_support/json/encoders/object.rb:4:in `to_json
Herhangi bir fikir?
username
,foo
ya dabar
yöntemler argümanlar bekliyoruz?