Ruby on rails 3 - 在 html 视图中渲染 JBuilder 视图



>我用JBuilder创建了一个json视图。但是我想将其预加载到数据对象中,以便 Backbone 可以尽早访问数据而无需获取数据。

如何将 list.json.jbuilder 视图呈现到我的 list.html.erb 视图中?

通常如果没有jbuilder,我会做这样的事情:

<div data-list="<%= @contents.to_json %>"></div>

render 从视图中调用时,返回传递的模板或部分的字符串呈现;您可以根据需要将该字符串嵌入到视图中。请注意:

  • 您必须在模板名称后附加后缀/扩展名类型。如果你不这样做,Rails 可能会对你调用的模板文件感到困惑;IE:它可能选择list.html.erb而不是list.json.jbuilder。如果list.html.erb 进行此调用,则尝试渲染list.html.erb会导致无限递归和 SystemStackError。对render使用:format选项似乎不起作用。
  • 您必须指定模板的限定路径;它不会为"list.json"找到正确的模板,因为它list.json.jbuilderlist.html.erb位于同一目录中。
  • 你需要通过raw传递render调用的输出;否则,当它嵌入到视图中时,它将被转义。

因此,对于您的示例,您可以编写以下内容,假设您的模板在 /app/views/foo 中:

<div data-list="<%= raw render(:template => "foo/list.json", :locals => { :contents => @contents }) %>"></div>

相关内容

  • 没有找到相关文章

最新更新