【发布时间】:2014-02-21 03:47:42
【问题描述】:
我有一个 Rails 的 actionview 部分,它遍历层次结构中的对象 - 分支对象(模拟数组)包含叶子或分支对象等。对于每个分支对象,我有以下代码的部分:
branch.each do |child|
render partial: child.class.to_s.underscore, object: child, layout: child.layout
end
输出是字面意思:
[#<LeafObject:0x007fbf6806f480 @id="obj1">, #<LeafObject:0x007fbf700c80c8 @id="obj2">]
考虑到这些叶子对象的部分包含<%= leaf_object.id %><br />,我希望得到以下输出:
obj1<br />obj2<br />
这就是它变得奇怪的地方。如果我直接在分支数组中的对象上调用render,它会起作用,但只有当我单独执行时。似乎第一个对象的缓冲区被第二个对象覆盖了。
render partial: branch[0].class.to_s.underscore, object: branch[0], layout: branch[0].layout
render partial: branch[1].class.to_s.underscore, object: branch[1], layout: branch[1].layout
生产...
obj2<br />
是的,我知道:WTF!?!就像渲染在枚举器中的行为会有所不同。
另外,请记住,我没有使用集合,因为每个对象的布局都会发生变化(即分支 [0].layout)。使用集合有效,但不适用于每个对象布局。
知道我做错了什么吗?多次调用渲染是一件坏事吗?任何虽然将不胜感激。
版本:Ruby:1.9.3,Rails:3.2.10
【问题讨论】:
标签: ruby-on-rails ruby actionview