gpt4 book ai didi

ruby-on-rails - ruby rails : Using XML Builder Partials

转载 作者:数据小太阳 更新时间:2023-10-29 01:39:21 26 4
gpt4 key购买 nike

XML 构建器中的部分被证明是非常重要的。

经过一些初步的 Google 搜索,我发现以下方法有效,尽管它不是 100%

 xml.foo do
xml.id(foo.id)
xml.created_at(foo.created_at)
xml.last_updated(foo.updated_at)
foo.bars.each do |bar|
xml << render(:partial => 'bar/_bar', :locals => { :bar => bar })
end
end

除了 XML 输出没有正确缩进外,这将起到作用。输出类似于:

<foo>
<id>1</id>
<created_at>sometime</created_at>
<last_updated>sometime</last_updated>
<bar>
...
</bar>
<bar>
...
</bar>
</foo>

<bar>元素应在 <last_updated> 下方对齐元素,它是 <foo> 的子元素像这样:

<foo>
<id>1</id>
<created_at>sometime</created_at>
<last_updated>sometime</last_updated>
<bar>
...
</bar>
<bar>
...
</bar>
</foo>

如果我将 bar/_bar.xml.builder 中的内容复制到模板中,效果会很好,但这样就不会干了。

最佳答案

我通过在部分中将构建器引用作为本地传递来解决这个问题。不需要猴子补丁。使用原始示例:

xml.foo do
xml.id(foo.id)
xml.created_at(foo.created_at)
xml.last_updated(foo.updated_at)
foo.bars.each do |bar|
render(:partial => 'bar/_bar', :locals => {:builder => xml, :bar => bar })
end
end

然后在您的部分中确保使用“builder”对象。

builder.bar do
builder.id bar.id
end

此外,上面的内容似乎只适用于 Rails 4。Rails 5 及更高版本请参阅下面@srghma 的评论

关于ruby-on-rails - ruby rails : Using XML Builder Partials,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2986245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com