मुझे अपने रेल 3.2 ऐप में कोई समस्या है जहां JSON के माध्यम से एक वर्चुअल विशेषता को तुरंत भेज दिया गया है, जो पैरा हैश में सही जगह पर नहीं है। खैर, यह वह जगह नहीं है जहां मैं उम्मीद करता हूं। यह देखना बाकी है कि मेरी अपेक्षाएं सही हैं या नहीं। :)आभासी विशेषता पैराम के अंदर मॉडल हैश में स्थानांतरित नहीं हुई
मैं एक मॉडल मानक आभासी विशेषता पद्धति का उपयोग कर, इस तरह है:
class Track < ActiveRecord::Base
def rating
# get logic removed for brevity
end
def rating=(value)
# set logic
end
def as_json(options={}) # so my method is in the JSON when I use respond_with/to_json
super(options.merge(methods: [:rating]))
end
end
JSON मेरी नियंत्रक के लिए भेजा इस तरह दिखता है:
{"id":1,"name":"Icarus - Main Theme 2","rating":2}
स्पष्ट है कि, नाम और आईडी वर्चुअल नहीं है, रेटिंग है।
मैं पैरामीटर हैश में इस के साथ खत्म, रेल के बाद अपना जादू करता है:
{"id"=>"1", "name"=>"Icarus - Main Theme 2", "rating"=>2, "track"=>{"id"=>"1", "name"=>"Icarus - Main Theme 2"}}
आप देख सकते हैं, आईडी और नाम यह नेस्ट करने के लिए करते हैं: ट्रैक हैश, लेकिन रेटिंग नहीं करता है। क्या यह अपेक्षित व्यवहार है? यह नियंत्रक में नेस्टेड हैश का उपयोग करने के (कुछ हद तक) मानक अभ्यास को तोड़ता है क्योंकि नेस्टेड हैश में मुझे आवश्यक सभी पैरामीटर नहीं होते हैं।
Track.update(params[:id], params[:track]) # :track is missing rating
आपकी मदद के लिए धन्यवाद!
क्या आप सबमिशन बनाने वाले फॉर्म को पेस्ट कर सकते हैं, ऐसा लगता है कि – MatthewFord