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 endou 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 endEste post foi escrito ao som de Simple Minds - Don't You (Forget About Me)
0 comentários :
Postar um comentário