产量Rails 2 vs Rails 3

时间:2013-06-27 08:25:02

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-2 yield

我正在将rails 2应用程序迁移到rails 3.在执行此操作时,我遇到了一个带有yield的wiered行为。 我有一个代码片段,我得到yield的返回值。

x= true if yield 'xyz'

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

在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是否已完全更改?

1 个答案:

答案 0 :(得分:0)

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

if content_for?(:xyz)
  yield(:xyz)
  x = true
end