domingo, 9 de agosto de 2009

Saber, dentro de um helper, o nome da view que o invocou

Esses dias eu estava querendo criar um helper para me ajudar com o I18n (Internationalization) da minha aplicação.

O problema é que dentro desse helper, eu precisava saber o nome da view que o invocou.

Geralmente nós usamos params[:controller] e params[:action] para saber o nome do controller e da action, respectivamente. Para saber o nome da view, as vezes é usado a constante __FILE__, mas nesse caso ela não ajuda porque se você usá-la dentro de um helper ela te retornará o nome do arquivo do helper, e não da view que o invocou.

Postei a pergunta no grupo da rails-br e o Rafael Rosa descobriu a solução pra mim (através desse link). Para conseguir o nome da view, você pode usar um desses métodos:

@template.template.relative_path
@template.template.base_path
@template.template.filename
@template.template.path_without_format_and_extension
@template.template.path_without_extension
@template.template.source


Acredito que os nomes são auto explicativos.

Como a dica foi útil para mim, resolvi publicar aqui para caso mais alguém estiver com esse problema.

Abraços, e até o próximo post!

0 comentários: