рельсы - как визуализировать объект JSON в представлении - PullRequest
17 голосов
/ 02 марта 2011

сейчас я создаю массив и использую:

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

Спасибо!

Ответы [ 3 ]

23 голосов
/ 28 января 2013

Или используйте:

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

для выхода из любых символов кодировки html.

13 голосов
/ 02 марта 2011

Я бы порекомендовал написать этот код в самом помощнике. Тогда просто используйте .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) %>
6 голосов
/ 02 марта 2011
<%= @comments.to_json %>

тоже надо делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...