2011-03-01 23 views
16

अभी मैं एक सरणी बना रहा हूं और का उपयोग कर:रेल - कैसे एक दृश्य में एक JSON ऑब्जेक्ट प्रस्तुत करना

render :json => @comments 

यह एक साधारण JSON ऑब्जेक्ट के लिए ठीक होगा, लेकिन अभी मेरी JSON ऑब्जेक्ट कई की आवश्यकता है सहायक जो सबकुछ तोड़ रहे हैं और सहायक की आवश्यकता है नियंत्रक में शामिल है जो हल होने से अधिक समस्याएं पैदा करता है।

तो, मैं इस JSON ऑब्जेक्ट को एक दृश्य में कैसे बना सकता हूं, जहां मुझे कुछ भी करने या किसी सहायक का उपयोग करते समय कुछ तोड़ने की चिंता करने की आवश्यकता नहीं है। अभी मैं जिस तरह से नियंत्रक में JSON ऑब्जेक्ट बना रहा हूं, ऐसा कुछ ऐसा दिखता है? मुझे इसे देखने के लिए माइग्रेट करने में सहायता करें :)

# Build the JSON Search Normalized Object 
@comments = Array.new 

@conversation_comments.each do |comment| 
    @comments << { 
    :id => comment.id, 
    :level => comment.level, 
    :content => html_format(comment.content), 
    :parent_id => comment.parent_id, 
    :user_id => comment.user_id, 
    :created_at => comment.created_at 
    } 
end 

render :json => @comments 

धन्यवाद!

+0

"बहुत से सहायकों की आवश्यकता है", क्या सहायक, क्या करने के लिए थोड़ा उलझन में? – macarthy

+0

html_format एक सहायक है जो उपयोगकर्ता simple_format और auto_link है। यही वह जगह है जहां सभी परेशानी है। – AnApprentice

+1

[इन दिशानिर्देशों का पालन करें] (http://stackoverflow.com/questions/2088280/in-rails-how-do-you-render-json-using-a-view/2088378#2088378) –

उत्तर

13

मैं अनुशंसा करता हूं कि आप उस कोड को एक सहायक में ही लिखें। फिर सरणी पर .to_json विधि का उपयोग करें।

# application_helper.rb 
def comments_as_json(comments) 
    comments.collect do |comment| 
    { 
     :id => comment.id, 
     :level => comment.level, 
     :content => html_format(comment.content), 
     :parent_id => comment.parent_id, 
     :user_id => comment.user_id, 
     :created_at => comment.created_at 
    } 
    end.to_json 
end 

# your_view.html.erb 
<%= comments_as_json(@conversation_comments) %> 
+0

प्रतीक्षा करें ... क्या हो रहा है एक सहायक के अंदर मतलब है कि यह सरल_फॉर्मैट, आदि की चीजों का उपयोग कर सकता है w/o की आवश्यकता है? – AnApprentice

+0

यदि मैंने इस तथ्य के साथ ऐसा किया है कि html_format simple_format और auto_link का उपयोग करता है तो कोई समस्या हो सकती है? – AnApprentice

+0

मुझे लगता है कि आपने पाया है कि अब तक इसका उत्तर दें - लेकिन हां, आपको एक सहायक के भीतर अन्य सहायकों को स्पष्ट रूप से शामिल करने की आवश्यकता नहीं है। नोट: यह आवश्यक है कि आपके एप्लिकेशन नियंत्रक के पास 'सहायक: सभी' (डिफ़ॉल्ट) है। –

6
<%= @comments.to_json %> 

भी चाल करना चाहिए।

22

या उपयोग:

<%= raw(@comments.to_json) %> 

किसी भी html एन्कोडिंग पात्रों बाहर से बचने के लिए।

संबंधित मुद्दे