अपडेट करें:
इस मुद्दे को ठीक से नहीं खोजा गया था। असली मुद्दा भीतर है render :json।
मूल प्रश्न में पहला कोड पेस्ट अपेक्षित परिणाम देगा। हालांकि, अभी भी एक चेतावनी है। इस उदाहरण को देखें:
render :json => current_user
के रूप में ही नहीं है
render :json => current_user.to_json
यही है, render :jsonस्वचालित रूप to_jsonसे उपयोगकर्ता ऑब्जेक्ट से जुड़ी विधि को कॉल नहीं करेगा । वास्तव में , यदि मॉडल to_jsonपर ओवरराइड किया जा रहा है , तो नीचे वर्णित वर्णन उत्पन्न करेगा ।Userrender :json => @userArgumentError
सारांश
# 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निर्दिष्ट किया गया है। क्या कोई समझा सकता है कि वास्तव में यहाँ क्या हो रहा है?
कोई भी जिन्न जो मेरी मदद कर सकता है, वह मेरे अन्य प्रश्न का उत्तर दे सकता है: Rails में @ foo.to_json (विकल्प) और @ bar.to_json (विकल्प) को मिलाकर JSON प्रतिक्रिया कैसे बनाएं
मूल प्रश्न:
मैंने SO पर कुछ अन्य उदाहरण देखे हैं, लेकिन मैं वह नहीं कर रहा हूं जो मैं देख रहा हूं।
मैं कोशिश कर रहा हूँ:
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तरीकों तर्क उम्मीद करते हैं?