【问题标题】:Yield Rails 2 vs Rails 3产量 Rails 2 与 Rails 3
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

    • 是的,这就是我最终的结局。 x=true if content_for?('xyz')
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 2011-08-12
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 2011-04-17
    相关资源
    最近更新 更多