Подтвердить что ты не робот

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

Спасибо!

4b9b3361

Ответ 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 %>

тоже должен сделать трюк.