मैं रेल मददगार पर रूबी के साथ जेसन डेटा कैसे प्रारूपित करूं?

मैंने पिछले कुछ दिनों में पढ़ा है और खुद को handlebars.js templating के साथ परिचित कर रहा है और यह बहुत अच्छा है।

अभी मैं अपने आंशिक हिस्सों में से एक के साथ काम कर रहा हूं जिसमें HTML का एक गुच्छा है जहां मैंने सरल_फॉर्मेट, time_ago_in_words जैसे सहायक उपकरण का उपयोग किया है। स्पष्ट रूप से इन सहायकों का उपयोग हैंडलबार्स के साथ नहीं किया जा सकता है। तो मैं ऐसा कुछ करना चाहता हूं:

def get_micropost

   respond_to do |format|   
     format.json { render json: formatted_micropost_json_data(Micropost.where("id < ?", params[:micropost_id]).first) } 
   end

end

माइक्रोप्रोस्ट सहायक:

module MicropostsHelper

    def formatted_micropost_json_data(micropost)

        content: simple_format h(micropost.content)
        created_at: time_ago_in_words(micropost.created_at)
        id: micropost.id
        image: micropost.image
        link: micropost.link
        poster_id: micropost.poster_id
        updated_at: micropost.updated_at 
        user_id: micropost.user_id 

    end

end

तो जब मैं एक AJAX कॉल के माध्यम से JSON वापस प्राप्त करता हूं तो इसे पहले से ही सही रूप से स्वरूपित किया जाएगा। तो मैं बस सामान्य रूप से अपने हैंडलबार्स चर प्रदर्शित कर सकते हैं।

क्या यह भी काम करेगा?

यदि ऐसा नहीं है तो ऐसा करने का सबसे अच्छा तरीका क्या होगा?

सधन्यवाद

0
जोड़ा
विचारों: 1

1 उत्तर

यहां आपके कोड का सुझाव दिया गया है:

class Micropost
  def formatted_json_data
    {
      content:    simple_format(h(self.content)),
      created_at: time_ago_in_words(self.created_at),
      id:         self.id,
      image:      self.image,
      link:       self.link,
      poster_id:  self.poster_id,
      updated_at: self.updated_at,
      user_id:    self.user_id
    }
  end
end

def get_micropost
  respond_to do |format|   
    format.json do
      posts = Micropost.where("id < ?", params[:micropost_id])
      data = posts.first.formatted_json_data
      render(json: data)
    end
  end
end

आप अपनी विधि के अंदर एक हैश शाब्दिक करना चाहते थे - जो मूल रूप से आप मूल रूप से वैध रूबी कोड नहीं थे।

साथ ही जंजीर विधि कॉल की लंबी लाइन को तोड़ने से अधिक जानकारीपूर्ण त्रुटि संदेश मिल सकते हैं और उन्हें संभालने के लिए स्पष्ट अवसर प्रदान किए जा सकते हैं।

0
जोड़ा
मुझे स्टेटस कोड मिल रहा है: get_microposts url प्राप्त करने के लिए AJAX का उपयोग करते समय 500 आंतरिक सर्वर त्रुटि। यह पहले नहीं हुआ .. यह भी सुनिश्चित नहीं है कि यह अब क्यों हो रहा है।
जोड़ा लेखक LondonGuy, स्रोत
यह त्रुटि है: NoMethodError (# <�माइक्रोप्रोस्ट: 0x0000010525b830> के लिए अपरिभाषित विधि 'formatted_json_data'):
जोड़ा लेखक LondonGuy, स्रोत
यह मुझे मेरे जवाब के लिए नेतृत्व किया। धन्यवाद
जोड़ा लेखक LondonGuy, स्रोत
खैर मुझे यकीन नहीं है कि आपका शेष कोड कैसा दिखता है, इसलिए आपको इसके बाकी हिस्सों के साथ काम करने के लिए समझदारी से अपना जवाब अनुकूलित करना होगा। 500 त्रुटि शायद इंगित करती है कि एक रूबी त्रुटि उठाई गई है - यदि आप लॉग का नाम और त्रुटि का बैकट्रैक ढूंढने के लिए जांच कर सकते हैं तो इससे कुछ और प्रकाश डाला जा सकता है।
जोड़ा लेखक arcresu, स्रोत
क्या आपने इस तरह की विधि को परिभाषित किया था? मैंने इसे मॉडल की एक उदाहरण विधि के रूप में रखा क्योंकि यह मेरे लिए समझदार लग रहा था। मुझे यकीन नहीं है कि h और time_ago_in_words को स्कॉप्ड किया गया है, इसलिए यदि इसे एक सहायक के रूप में रखना अधिक व्यावहारिक है जैसे आपके पास यह ठीक था, लेकिन महत्वपूर्ण हिस्सा था मैंने किया जैसे घुंघराले ब्रेसिज़ और कॉमा जोड़कर हैश शाब्दिक वाक्यविन्यास को ठीक करें।
जोड़ा लेखक arcresu, स्रोत