2010-06-04 8 views
8

il mio problema: voglio creare una classe TitlePanel nella mia cartella lib che classe usi il metodo content_tag ma non riesco a capire come caricarlo. Ho provato tutti richiedono 'xxx' che potrei pensare e continua a darmi messaggi di errore che non riesce a trovare il file richiesto.come usare content_tag in una lib/class

Fondamentalmente, quello che sto cercando di fare è creare un helper che generi html, ma devo passare attraverso una classe per memorizzare un valore prima. Ex di quello che sto cercando di fare:

title = TitlePanel.new("this is my title") 
title.add_panel "help" do 
    content_tag :div, "this is the help section..." 
end 
title.add_panel "search" do 
    content_tag :div, "this is the search section..." 
end 

title.to_s 

l'uscita essendo tutto il codice HTML tenuto a fare questo lavoro.

risposta

7

Dai uno sguardo. Se includi TagHelper nella parte superiore del tuo file nella directory lib, dovrebbe funzionare. Ecco un esempio:

class MyLib 
    include ActionView::Helpers::TagHelper 

    def foo(x) 
    content_tag :div, x 
    end 
end 


>> MyLib.new.foo "bar" 
=> "<div>bar</div>" 
+0

Situazione migliorata un po '. Ora si lamenta dell'acquisizione del metodo mancante. Qui è la mia piena codice classe TitlePanel includono ActionView :: Helpers :: TagHelper def initialize (t, d = "default") @title = t @description = d @labels = [] @ pannello = Hash.new fine def add_panel (etichetta, e blocco) @labels << etichetta @panel [label] = cedere fine fine – Alain

+0

migliorata formattazione ma rimosse metodo .to_s - merda, formattazione non funziona per i commenti? – Alain

+0

Non sono sicuro di cosa sta succedendo nel tuo esempio di codice. Ma, se vuoi semplicemente usare il metodo content_tag all'interno del modulo nella tua directory lib, allora dovresti essere in grado di aggiungere questo bit all'inizio del tuo file: include ActionView :: Helpers :: TagHelper –

5

Questa è una vecchia domanda, ma l'ho trovata prima e ho avuto lo stesso problema di OP. La migliore soluzione che ho trovato è stata utilizzare questo:

ActionController::Base.helpers.content_tag(:div, class: 'my_div') 
Problemi correlati