Ruby on rails rails—如何在视图中呈现JSON对象

Ruby on rails rails—如何在视图中呈现JSON对象,ruby-on-rails,json,ruby-on-rails-3,actionview,Ruby On Rails,Json,Ruby On Rails 3,Actionview,现在我正在创建一个数组并使用: render :json => @comments 这对于一个简单的JSON对象来说是很好的,但是现在我的JSON对象需要几个helper,这些helper破坏了所有东西,并且需要helper包含在控制器中,这似乎会导致更多的问题,而不是解决 那么,如何在一个视图中创建这个JSON对象呢?在这个视图中,我不必担心在使用助手时会做任何事情或破坏任何东西。现在我在控制器中创建JSON对象的方式看起来有点像这样?帮助我将其迁移到视图:) #构建JSON搜索规范化

现在我正在创建一个数组并使用:

render :json => @comments
这对于一个简单的JSON对象来说是很好的,但是现在我的JSON对象需要几个helper,这些helper破坏了所有东西,并且需要helper包含在控制器中,这似乎会导致更多的问题,而不是解决

那么,如何在一个视图中创建这个JSON对象呢?在这个视图中,我不必担心在使用助手时会做任何事情或破坏任何东西。现在我在控制器中创建JSON对象的方式看起来有点像这样?帮助我将其迁移到视图:)

#构建JSON搜索规范化对象
@comments=Array.new
@对话|评论。每个人都做|评论|
@comments.id,
:level=>comment.level,
:content=>html_格式(comment.content),
:parent\u id=>comment.parent\u id,
:user\u id=>comment.user\u id,
:created_at=>comment.created_at
}
结束
render:json=>@comments

谢谢

我建议您在助手本身中编写该代码。然后使用
.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) %>
#应用程序_helper.rb
def注释作为json(注释)
comments.collect do| comment|
{
:id=>comment.id,
:level=>comment.level,
:content=>html_格式(comment.content),
:parent\u id=>comment.parent\u id,
:user\u id=>comment.user\u id,
:created_at=>comment.created_at
}
end.to_json
结束
#您的_view.html.erb

也应该这样做。

或使用:

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


转义任何html编码字符。

有点被“需要几个帮助程序”搞糊涂了,什么帮助程序,做什么?html\u格式是一个帮助程序,用户可以使用简单的\u格式和自动链接。麻烦就在这里,跟着等等。。。在帮助程序中是否意味着它可以使用简单格式等不需要包含的内容?如果我这样做是因为html\u格式使用简单格式和自动链接是一个问题?我想你现在已经找到了答案-但是是的,你不需要显式地在帮助程序中包含其他帮助程序。注意:这要求您的应用程序控制器具有
helper:all
(默认值)。经过测试且看起来安全,例如
“警报(1)
变为
”\u003c/script\u003e\u003cscript\u003ealert(1)\u003c/script\u003e”
<%= @comments.to_json %>
<%= raw(@comments.to_json) %>