2011-09-15 1 views
12

Ho trovato un post con un titolo abbastanza simile a questo, ma non mi ha dato la risposta che stavo cercando. Sto provando ad usare il builder all'interno di un modello. Il codice simile a questa:NameError: costante non inizializzata ActiveRecord :: Associations :: Builder :: XMLMarkup

require 'builder' 

class Document < ActiveRecord::Base 
... 
    def create_xml 
    xml = Builder::XmlMarkup.new(:indent => 2) 
    ... 
    end 
... 
end 

Quando provo ad eseguire questo codice, ottengo il seguente errore:

NameError: uninitialized constant ActiveRecord::Associations::Builder::XMLMarkup 

Ma, quando provo la stessa cosa all'interno della console rotaie, tutto funziona va bene.
Mi manca qualcosa? Qualsiasi aiuto sarebbe molto apprezzato.

risposta

37

Trovato la risposta.

si deve accodare Builder per la Rootlevel, in questo modo:

xml = ::Builder::XmlMarkup.new(:indent => 2) 
+1

Grazie! Avete una spiegazione del perché questo funziona? – elsurudo

+0

Vedere la risposta a questo post: http://stackoverflow.com/questions/10482772/rubys-double-colon-operator-usage-differences – klaffenboeck