BlueCloth не работает с Rails 3

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

Предполагается, что в представлениях требуется помощник, называемый markdown, после запроса "bluecloth", но, похоже, он недоступен.

4 ответа

Я обновляю приложение до 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>

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

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

gem 'bluecloth', '>= 2.0.0'

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

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

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

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

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

Я бы предложил перейти на RDiscount через BlueCloth. Это капля замены и лучше по всем показателям.

http://github.com/rtomayko/rdiscount

То, что вы могли бы сделать, не говоря, что это красиво, - это создать инициализатор в вашем проекте rails и добавить в него следующее:

require 'bluecloth'

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

Это должно включить метод уценки для каждого строкового объекта.

Другие вопросы по тегам