Rails - как визуализировать объект 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
Спасибо!
Ответы
Ответ 1
Я бы рекомендовал вам написать этот код в самом помощнике. Затем просто используйте .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) %>
Ответ 2
Или используйте:
<%= raw(@comments.to_json) %>
чтобы избежать каких-либо символов кодировки html.
Ответ 3
<%= @comments.to_json %>
тоже должен сделать трюк.