如何在 jbuilder 中按数据分隔模板

How can I separate templates by data in jbuilder

我想用jbuilder做如下数据
我怎样才能让jbuilder分离?

data: [{
  type: "top"
  logo: "logo.png"
  title: "title"
  },{
  type: "nav"
  background: "bg.png"
  content: "<div> Welcome </div>"
  },{
  type: "footer"
  content: "Copyright: xx"
  }
]

我是那样做的,但是做不到运行

data.jbuilder

json.set! :result do
  json.array! data do |item|
     case item.type
     when 'top'
       json.partial! '_top', item: item
     when 'nav'
       json.partial! '_nav', item: item
     when 'footer'
       json.partial! '_footer', item: item
     else 
       return nil
  end
end

_top.jbuilder

json.logo   item.logo
json.title  item.title

_nav.jbuilder

json.background item.background
json.content    item.content

_footer.jbuilder

json.content item.content

我该如何解决这个问题?

当你调用 partials 时,不需要 _ 如果它在不同的文件夹中,你只需提供路径;如果在同一文件夹中,则提供名称。

尝试

json.partial! 'top', item: item
json.partial! 'nav', item: item
json.partial! 'footer', item: item