Rails - 如何将变量从一个控制器动作移动到另一个控制器动作而不重置它

时间:2013-12-12 09:53:18

标签: ruby-on-rails ruby-on-rails-4

我有一个变量,其中包含基于某些条件的特定日期,该日期在我的控制器的索引操作中建立:

def index
    if params[:y] && params[:m]
      @date = ...
    elsif
      @date = ...
    else        
      ...

它比上面的例子复杂一点,但你应该明白这个想法。 如果我想在同一个控制器的另一个动作中使用这个变量,我该怎么做?我希望它是这样的:

def new
  @today = see index action
...

由于

1 个答案:

答案 0 :(得分:2)

没有办法。

每个请求都会创建一个控制器实例。点击#index时,会有一个实例。您定义的实例变量可以存在于那里。当点击“new”时,这是一个新实例,旧的实例变量不再存在。

要记住请求之间的某些内容,您可以

  1. 使用查询字符串。
  2. 使用会话
  3. 保存到数据库(作为用户首选项)。
  4. 使用cookie(不太好)