2010-08-30 4 views
5

Совместим ли BlueCloth с Rails 3? Я не могу заставить его работать, может быть, кто-то его использует?BlueCloth не работает с Rails 3

Предполагается, что в представлении должен быть помощник под названием «уценка», требующий «bluecloth», но это, похоже, не доступно.

+1

с этой проблемой, слишком – postfuturist

ответ

2

Я создал свежий Rails 3 приложения и в Gemfile я добавил:

gem 'bluecloth', '>= 2.0.0' 

Затем открыл консоль:

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

Так что, кажется, работает, по крайней мере для меня ,

Вы также можете попробовать Rdiscount, который я не shure, но я думаю, что он основан на той же библиотеке C или, по крайней мере, имеет аналогичные тесты.

Вы должны быть более конкретными в том, как он не работает: возникает ли ошибка? Разве он не отображает html? и т.д ...

+0

Да, библиотека работает BlueCloth, но нет «уценка» помощник доступен. – postfuturist

+0

Я все время определял свой помощник в ApplicationHelper, я полагаю, что BlueGem не является специфичным для рельсов, BlueGem включает помощника Rails? – Macario

0

Что вы можете сделать, не говоря, что это красиво, создает инициализатор в проекте рельсы и поставить в нем следующее:

require 'bluecloth' 

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

Это должно позволить метод уценки на каждой строке объект.

10

Я сейчас обновляю приложение до rails3, и он отлично работает для меня. Я использую вспомогательную функцию, называемую «формат» в шаблонах, хотя приведенный ниже код также предоставляет функцию уценки (в rails3 вам придется использовать это с raw()). Вот содержание моего [проекта] /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 

Как предыдущий плакат сказал, вам также необходимо

gem 'bluecloth' 

в вашем [проект]/Gemfile. Мой шаблон выглядит следующим образом:

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

С помощью функции уценки было бы:

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

Поэтому я использую функцию форматирования. Переименуйте функции, как хотите.

+0

Я бы добавил .html_safe к строке, возвращаемой вашим помощником. Тогда это просто «<% = markdown @ post.body%>», нет необходимости в «сыром». –