在js.erb视图中渲染json

时间:2013-11-08 20:02:53

标签: jquery json ruby-on-rails-3

我正在尝试通过json响应向dynatree添加一个节点,但问题更为笼统(不是特定于dynatree):我无法了解如何使用.js.erb正确呈现json进入.html.erb视图

#ERB view
 ...
 <div id="places_tree"></div>
 ...

# controller
def add_places
  @places_json=Place.all.as_json
  respond_to do |format|
    format.js { render layout: false } # execute add_places.js.erb
  end
end

#add_places.js.erb

var node = $("#places_tree").dynatree("getRoot");
node.addChild(<%= @places_json %>); <=== node not renders into dynatree container `<div id="places_tree"></div>` here

如果我在上面的最后一行将其更改为纯json

node.addChild({"title": 'Title'})   

节点Title像我期望的那样渲染(名称标题的节点添加到<div id="places_tree"></div>)...

但我需要动态渲染@places_json

提前

thanx

1 个答案:

答案 0 :(得分:0)

很容易快速得到它

必须进行深度调试,但我终于发现了“问题”

1)我已在控制器方法

中将.as_json更改为.to_json

2)我在.html_safe

中使用简单的add_places.js.erb转义了伪json字符串

3)最后,我做了很长的'pffffff'声音,意识到它有多么简单