2011-03-01 22 views
16

şimdi ben bir dizi oluşturma ve kullandığım bir görünümde bir JSON nesnesi işlemek için nasıl: raylar -

render :json => @comments 

Bu basit bir JSON nesnesi için iyi olurdu, ama şu anda benim JSON nesnesi birkaç gerektirir Herşeyi kıran ve yardımcısı gerektiren yardımcılar, kontrolörde çözülmekten daha fazla sorun yaratan gibi görünüyor.

Peki, bu JSON nesnesini bir görünümde nasıl oluşturabilirim, burada bir şey yaparken veya bir yardımcıyı kullanırken herhangi bir şeyi kırmak konusunda endişelenmem gerekmiyor. Şu anda denetleyicideki JSON nesnesini nasıl yapıyorum bu şekilde küçük bir şey görünüyor? Bir görünümüne geçirmeme yardım et :)

# 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

"Pek çok yardımcıya ihtiyaç duyar" diye biraz kafa karıştırıcı, ne gibi yardımcılar yapar? – macarthy

+0

html_format, kullanıcıların simple_format ve auto_link olduğu bir yardımcıdır. Bütün sorun şu ki. – AnApprentice

+1

[bu yönergeleri] izleyin (http://stackoverflow.com/questions/2088280/in-rails-how-do-you-render-json-using-a-view/2088378#2088378) –

cevap

13

Bu kodu bir yardımcıda yazmanızı tavsiye ederim. Ardından, dizideki .to_json yöntemini kullanın.

# 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

Bekleyin ... Olmak Bir yardımcının içinde basit_format gibi şeyler kullanabileceği anlamına gelir; – AnApprentice

+0

Eğer html_format'ın simple_format ve auto_link kullanması bir problem mi oluyor? – AnApprentice

+0

Kendinize şu an cevap vermenizi sağladığınızı sanıyorum - ama evet, yardımcıların içinde başka yardımcıları açıkça bulundurmanıza gerek yoktur. Not: Bu, ApplicationController'ınızın 'helper: all' (varsayılan) olmasını gerektirir. –

6
<%= @comments.to_json %> 

çok hile yapmak gerekir.

22

Veya kullanım:

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

herhangi bir html kodlama karakterleri kaçmak için.