হালনাগাদ:
এই সমস্যাটি সঠিকভাবে অনুসন্ধান করা হয়নি। আসল ইস্যুর মধ্যেই রয়েছে render :json
।
মূল প্রশ্নে প্রথম কোড পেস্ট প্রত্যাশিত ফলাফল দেবে। তবে, এখনও একটি সতর্কতা অবলম্বন আছে। এই উদাহরণটি দেখুন:
render :json => current_user
হয় না হিসাবে একই
render :json => current_user.to_json
অর্থাৎ, ব্যবহারকারী অবজেক্টের সাথে যুক্ত পদ্ধতিটি 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
যে কোনও জিনিয়াই আমাকে এটির সাহায্য করতে পারে তা সম্ভবত আমার অন্যান্য প্রশ্নের উত্তর দিতে পারে: কীভাবে জেলগুলিতে @ foo.to_json (বিকল্পগুলি) এবং @ বার্স.টো_জসন (বিকল্পগুলি) একত্রিত করে 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
পদ্ধতিগুলির কোনও আর্গুমেন্ট আশা করে?