【发布时间】:2013-06-24 15:55:45
【问题描述】:
我正在将 rails 2 应用程序迁移到 rails 3。在执行此操作时,我遇到了一个带有 yield 的奇怪行为。 我有一个代码 sn-p,我在其中得到了产量的返回值。
x= true if yield 'xyz'
所以如果'xyz' 的content_for 存在,x 的值将被设置为真,否则什么都不会发生。它在 rails 2 中运行良好。但在 rails 3 中,总是将 true 设置为 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 已经完全改变了吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-2 yield