在不同的方法中使用变量?

时间:2013-11-29 18:17:52

标签: ruby-on-rails ruby

此时我需要在视图中使用三个不同方法中的三个变量和相应的文件,但我不想在每个方法中定义每个变量。

如何定义变量一次并且可以访问所有三种方法中的变量?

这些是方法:

def pendientes
end

def proceso
end

def finalizadas
end

这是三个变量:

@pendientes     = Support.where("estado = ?", 1)
@procesos       = Support.where("estado = ?", 2)
@finalizadas    = Support.where("estado = ?", 3)

我如何定义变量来做到这一点?

1 个答案:

答案 0 :(得分:3)

如果你在控制器的环境中工作,你可以这样做:

class MyController < ApplicationController
  before_filter :initialize_variables

  def pendientes
  end

  def proceso
  end

  def finalizadas
  end

  private

    def initialize_variables
      @pendientes = Support.where(estado: 1)
      @procesos = Support.where(estado: 2)
      @finalizadas = Support.where(estado: 3)
    end
end

<强>更新

如果您使用before_filter滚动,最好添加only: [:pendientes, :proceso, :finalizadas],以便添加到控制器的未来操作不会初始化这三个变量。

另一种选择是删除before_filter调用,并从现有的三个操作中调用initialize_variables方法。