在Rails中使用全局变量与实例变量

时间:2013-03-27 22:11:36

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我有一个rails应用程序,我根据日期范围显示一些结果。我正在使用一些全局变量来设置日期。我的代码如下所示:

#index.html.erb 

  <td>From: <%= $from %></td>
  <td>To: <%= $to - 1.day%></td>


#controller

if (params[:first] || params[:next] || params[:previous])
    if params[:first]
        $from = Date.today - 7.day
        $to = Date.today + 1.day
    end

    if params[:next]
        $from = $from - 7.day
        $to = $to - 7.day
    end 

    if params[:previous]
        if $to != Date.today + 1.day
             $to = $to + 7.day
             $from = $from + 7.day
        end
    end 
end

这段代码似乎工作正常,但是当我从多台机器访问应用程序时,它是一团糟,因为全局变量对于每个实例都不是唯一的。

所以我尝试使用@variable(实例变量)而不是全局变量。但是每当我从视图中提交页面时,所有变量都会重置为NULL,并且值不会持久存储到控制器。有人可以建议我在这里解决问题。

1 个答案:

答案 0 :(得分:2)

如果没有更多背景信息,目前还不清楚您的具体问题是什么。那说:

控制器实例化每个请求:实例变量显然在请求之间重置。

可能是before_filter和/或一些实用程序方法来实例化那些from / to变量?

此外,每个param的if语句周围的包装似乎是多余的;真的有必要吗?