3

我正在将 rails 2 应用程序迁移到 rails 3。在执行此操作时,我遇到了一个带有 yield 的奇怪行为。我有一个代码片段,我可以在其中获得产量的返回值。

x= true if yield 'xyz'

因此,如果 'xyz' 存在 content_for,则 x 的值将设置为 true,否则不会发生任何事情。它在 rails 2 中运行良好。但在 rails 3 中,always true 设置为 x 因为rails 返回一个空字符串,即使 'xyz' is not available

在 Rails 2 中:

yield 'xyz' # nil if xyz is not available
yield 'xyz' # "hi" if xyz is available. "hi" is the rendered content

在 Rails 3 中:

yield 'xyz' # "" if xyz is not available
yield 'xyz' # "hi" if xyz is available. "hi" is the rendered content

为什么会发生这种变化?render_template 已完全更改?

4

1 回答 1

0

我无法回答您的问题,但我建议使用这种方法:

if content_for?(:xyz)
  yield(:xyz)
  x = true
end
于 2013-06-27T11:35:25.497 回答