0

我正在尝试为我的站点设置两种环境,一种在开发服务器上,一种在实时服务器上。我想规定可以在每台服务器上看到数据库中的哪些记录。我已经在我的包含中创建了一个文件,对于开发它有这个@show = "dev"并且对于实时它有@show = "live"我已经将它包含在我的应用程序布局的顶部,所以它在每个页面上。然后在我看来,对于每个数据库调用,我都想设置如下条件:

- f = Event.find(:all, :conditions => ["#{@show} = 1"])

但它不会@show作为变量而被认为是变量,只是显式地使用它或忽略它。有没有一种简单的方法可以做到这一点,或者这不会像我期望的那样工作吗?

更新

我已经设法让它工作,但我必须在每个单独的视图中包含文件,而不仅仅是在应用程序布局中......不理想,但它是一个解决方案:

= render "includes/dev_live"

- f = Event.find(:all, :conditions => {@show => 1})
4

2 回答 2

1

我认为您最好将变量更改为符号,即

@show = :dev
@show = :live

那么您的活动记录查询可能变为:

f = Event.find(:all, :conditions => {@show => 1})
于 2013-07-15T09:21:34.900 回答
0

您需要将变量转换为实例变量。在条件下使用它。

你可以试试这个

f = Event.find(:all, :conditions => {@show.to_sym => 1 })

于 2013-07-15T09:17:44.357 回答