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. Это капля замены и лучше по всем показателям.
То, что вы могли бы сделать, не говоря, что это красиво, - это создать инициализатор в вашем проекте rails и добавить в него следующее:
require 'bluecloth'
class String
def markdown
BlueCloth.new(self).to_html
end
end
Это должно включить метод уценки для каждого строкового объекта.