2012-08-16 9 views
15

Sto cercando di override un metodo di supporto di base_helper.rb utilizzando questo:Spree override metodo di supporto

module Spree 
    module BaseHelper.class_eval do 

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

    end 
end 

Non funziona per me. Qualcuno sa cosa mi manca qui?

Grazie!

fisso:

dovrei usare:

Spree::BaseHelper.module_eval do 

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

end 

invece.

+0

Per me ha funzionato solo se usato 'Spree :: BaseHelper.class_eval' –

risposta

20

Re-opening il modulo funziona altrettanto bene:

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

Non c'è alcun motivo particolare per utilizzare class_eval e module_eval, è appena stato l'abitudine nel progetto Sprea per un tempo molto lungo.

+2

Ryan, dove inseriamo questo codice. Ho bisogno di sovrascrivere il metodo 'link_to_cart' per creare un segmento di carrello personalizzato. Sto arrivando da PHP e se questa è una domanda di Rails, mi dispiace ma apprezzo molto un commento. –

+3

Crea una cartella sotto app/helper, chiamata spree, e metti il ​​codice di Ryan Bigg in un file chiamato base_helper.rb –

+12

@JoaoPereira se chiami base_helper.rb, spree non caricherà il file base_helper.rb originale. Dovresti copiare/incollare ogni funzione, perché funzioni correttamente. Ma se chiami base_helper_decorator.rb, funziona. – alexandrecosta