【发布时间】:2010-09-19 07:29:04
【问题描述】:
我有一个非常古老的模板系统,它是在 ERB 之上编写的。它依赖于存储在数据库中的 ERB 模板。那些被读取和渲染。当我想将数据从一个模板传递到另一个模板时,我使用 Rails 渲染方法的 :locals 参数。为了在某些模板中设置这些变量的默认变量,我使用定义的?方法,它只是告诉我是否已定义局部变量,如果没有,我将其初始化为默认值,如下所示:
unless defined?(perex)
perex = true
end
我正在将应用程序升级到最新的 Rails,我看到一些奇怪的行为。基本上,这有时有效(有时 perex 未定义),有时则无效(perex 已定义并设置为 nil)。在没有任何其他改变的情况下发生这种情况。
我有两个问题: 除了使用定义之外,还有什么更好的方法吗?哪个被证明是不可靠的(在 Rails 1.6 上几年可靠)?这种方式不应该导致我重写所有模板。 我一直在浏览 Ruby 文档,但找不到任何关于定义的内容?方法。它被弃用了还是我只是瞎了眼?
编辑: 实际问题是由似乎是 Ruby/eRB 错误引起的。有时 unless 语句会起作用,但有时不会。奇怪的是,即使第二行被执行 perex 仍然对世界其他地方保持零。删除定义?解决了。
【问题讨论】:
标签: ruby-on-rails ruby content-management-system erb