2010-08-30 6 views
5

BlueCloth è compatibile con Rails 3? Non riesco a farlo funzionare, forse qualcuno lo usa?BlueCloth non funziona con Rails 3

Dovrebbe esserci un helper chiamato 'markdown' disponibile nelle viste dopo aver richiesto 'bluecloth', ma questo non sembra essere disponibile.

+1

avere questo problema, anche – postfuturist

risposta

2

ho creato un fresco Rails 3 app e nel Gemfile ho aggiunto:

gem 'bluecloth', '>= 2.0.0' 

poi aprì la console:

ruby-1.8.7-p302 > BlueCloth.new('**hello**').to_html 
=> "<p><strong>hello</strong></p>" 

Così sembra funzionare, almeno per me .

Si potrebbe anche provare Rdiscount che non sono sicuro, ma penso che sia basato sulla stessa libreria C, o almeno abbia benchmark simili.

Dovresti essere più specifico su come non funziona: genera un errore? Non esegue l'html? ecc ...

+0

Sì, le opere della biblioteca BlueCloth, ma non v'è alcun aiuto 'mark-down' a disposizione. – postfuturist

+0

Ho sempre definito il mio helper in ApplicationHelper, immagino che BlueGem non sia specifico per i binari, BlueGem include un helper per Rails? – Macario

0

Che cosa si potrebbe fare, non dicendo che è abbastanza, è la creazione di un inizializzatore nel progetto rotaie e mettere il seguente in esso:

require 'bluecloth' 

class String 
def markdown 
    BlueCloth.new(self).to_html 
end 
end 

Questo dovrebbe abilitare il metodo mark-down su ogni stringa oggetto.

10

Sto aggiornando un'applicazione su rails3 in questo momento e ha funzionato bene per me. Io uso una funzione di supporto chiamata "format" nei template anche se il codice sottostante fornisce anche una funzione markdown (in rails3 dovrai usarlo con raw()). Ecco il contenuto del mio [progetto] /app/helpers/application_helper.rb

module ApplicationHelper 
    # Format text for display.                  
    def format(text) 
    sanitize(markdown(text)) 
    end 

    # Process text with Markdown.                 
    def markdown(text) 
    BlueCloth::new(text).to_html 
    end 
end 

Come un poster precedente detto, avrete anche bisogno

gem 'bluecloth' 

nel [progetto]/Gemfile. Il mio modello si presenta come:

<p><%= format @post.body %></p> 

Con la funzione di riduzione dei prezzi che sarebbe stato:

<p><%= raw(markdown(@post.body)) %></p> 

Così uso la funzione di formattazione. Rinominare le funzioni come si desidera.

+0

Aggiungerei .html_safe alla stringa restituita dall'helper. Quindi è semplicemente "<% = markdown @ post.body%>", non c'è bisogno di "raw". –