Как добавить RedCloth в form_for?

Смущающий вопрос, но я не могу перевести документацию в фактическую форму. Это все, что предоставляет сайт..

RedCloth.new("Some text").to_html
 #=> "<p>Some text</p>"

Я понимаю, что именно так я анализирую его после того, как он был сохранен. Но как мне сохранить его как размеченный текст?

Вот моя попытка начать это, но я не знаю, как установить параметр для сохранения текстовой области как RedCloth. Есть идеи?

- form_for @text do |f|
   # some RedCloth instantiation
   f.submit

1 ответ

Решение

Вы не сохраняете параметр, проанализированный как RedCloth, и не рекомендую его. Анализ его в RedCloth приведет к потере исходного значения, если вы не сохранили вывод в альтернативном поле, что я бы порекомендовал.

Вы можете использовать before_save в вашей модели, чтобы проанализировать это значение и сохранить его:

before_save :parse_text

# your model methods go here

private

  def parse_text
    self.parsed_text = RedCloth.new(text).to_html
  end

Когда вы хотите сделать parsed_text По вашему мнению, вы должны сказать Rails, что это безопасно:

@object.parsed_text.html_safe

Однако приведенный здесь код не учитывает людей, смешивающих Markdown и HTML, поэтому будьте очень осторожны при его использовании.

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