content_for 与部分产量
在使用 HAML (3.1.4) 的 Rails 3.0 中,我有
- 一些类似模板的 partial,例如 _template.html.haml:<前><代码>.panel.top = 产量:panel_top 。内容 = 产量
一些另一个部分将使用上一个模板显示(所有这些东西是使用 AJAX 渲染的,但这并不重要)
- content_for :panel_top 做 .title.左 = 标题 内容文本
,这在Rails中就像一个魅力< strong>3.0
但是,升级到3.2后失败了! Yiels 只是产生“内容文本”,所以我有两次“内容文本”,根本没有标题,
只是将 = yield :panel_top
更改为 = content_for :panel_top
适用于 3.2
我不确定这个解决方案是否可以,如果它稳定或推荐,我找不到任何有关 yield
处理中的更改的注释,也无法在 Rails 3.1 发行说明中找到,也无法在 Rails 3.1 发行说明中找到。 3.2 个。
你能帮忙解释一下在部分代码中组织yield
的最佳方法是什么吗?
In rails 3.0 with HAML (3.1.4) I have
some template-like partial, like _template.html.haml:
.panel.top = yield :panel_top .content = yield
some another partial which will be displayed using prev template (all this stuff is rendered using AJAX, but this doesn't matter)
- content_for :panel_top do .title.left = title content text
and this worked like a charm in Rails 3.0
But, after upgrade to 3.2 this fails! Yiels just yields "content text", so I have "content text" twice and no title at all
only changing = yield :panel_top
to = content_for :panel_top
works for 3.2
I am not sure that this solution is ok, and if it is stable or recommended, I cannot find any notes about changes in yield
processing nor in Rails 3.1 release notes, nor in 3.2 ones.
Can you help what is the best way to organize yield
ing inside partials?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
从 Rails 3.0 到 Rails 3.2
content_for
确实发生了变化:3.0:
3.2:
这向我们展示了,从 3.2
content_for
> 也适用于显示/插入内容,而不仅仅是将其存储为命名部分。另外,如果您尝试调试
yield
逻辑,您会发现它在content_for
正确初始化之前就产生了。因此,将片段缓存排除在本讨论之外,我可以得出结论,
content_for
是在除顶级布局之外的任何位置插入命名节的首选方式。在帮助程序和其他情况下,yield
应该呈现错误的结果。From Rails 3.0 to Rails 3.2
content_for
was really changed:3.0:
3.2:
This shows us, that from 3.2
content_for
works for showing/inserting content too, not only store it for named section.Also, if you make an attempt to debug
yield
logic you'll se that it yields beforecontent_for
is correctly initialized.So, leaving fragment caching out of this discussion I can conclude that
content_for
is preferrable way to insert named sections anywhere except top-level layouts. In helpers and other situationsyield
should render wrong results.