Normalmente na Ruby definimos o método initialize dentro de uma classe para formatar a passagem de parâmetros ao instanciar um novo objeto e também atribuir valores a variáveis.
Porém na Ruby on rails se utilizamos o método initialize dentro de um arquivo controller ocorre uma sobreescrita neste método que ja está pré definido, um dos problemas gerados ao tentar definir este método é que os layouts não são executados e nenhuma mensagem de erro específica é gerada.
Isso pode ser contornado de duas maneiras diferentes.
A primeira é logo após você definir suas variavéis efetuar a chamada ao método initialize da classe original através do super.
class MyClassController < ApplicationController
layout 'myLayout'
def initialize
@var1 = val1
@var2 = val2
...
super
end
end
ou utilize a segunda maneira com before_filter, esta instrução chamará automaticamente o método que você definir antes que qualquer outro método seja executado, funcionando normalmente como o initialize dentro de uma classe na Ruby.class MyClassController < ApplicationController
layout 'myLayout'
before_filter :my_init_method
def my_init_method
@var1 = val1
@var2 = val2
...
end
end
Este post foi escrito ao som de Simple Minds - Don't You (Forget About Me)

0 comentários :
Postar um comentário