2012-08-16 21 views
15

Estoy tratando de anular un método de ayuda de base_helper.rb utilizando esta:Spree anulando método de ayuda

module Spree 
    module BaseHelper.class_eval do 

    def taxons_tree(root_taxon, current_taxon, max_level = 1) 
     ..... 
    end 

    end 
end 

No está funcionando para mí. ¿Alguien sabe lo que me falta aquí?

¡Gracias!

fijo:

debería usar:

Spree::BaseHelper.module_eval do 

    def taxons_tree(root_taxon, current_taxon, max_level = 1) 
     ... 
    end 

end 

lugar.

+0

Para mí solo funcionaba cuando se usa 'Spree :: BaseHelper.class_eval' –

Respuesta

20

Re-abrir el módulo funcionará igual de bien:

module Spree 
    module BaseHelper 
    def taxons_tree(root_taxon, current_taxon, max_level = 1) 
     ... 
    end 
    end 
end 

hay ninguna razón especial para usar class_eval y module_eval, que sólo ha sido la costumbre en el proyecto Spree desde hace mucho tiempo.

+2

Ryan, ¿dónde ponemos este código? Necesito anular el método 'link_to_cart' para crear un segmento de carrito personalizado. Vengo de PHP y si esta es una pregunta de Rails, lo siento pero aprecio mucho un comentario. –

+3

Cree una carpeta debajo de la aplicación/ayudantes, llamada juerga, y coloque el código de Ryan Bigg en un archivo recomendado por base_helper.rb –

+12

@JoaoPereira si llama a base_helper.rb, spree no cargará el archivo base_helper.rb original. Tu tendrías que copiar/pegar cada función, para que funcione correctamente. Pero si llamas a base_helper_decorator.rb, funciona. – alexandrecosta

Cuestiones relacionadas