Может ли ruby ​​отображаться в уценке? Приложение Ruby on Rails

Можно ли использовать ruby ​​в уценке в моем приложении Ruby on Rails? Я использую драгоценный камень RedCarpet, и в моем приложении Controller есть следующее.

class ApplicationController < ActionController::Base
  before_filter :get_contact_info

  private
    def get_contact_info
      @contact = Contact.last
    end
  end

Вот схема Контакта

create_table "contacts", :force => true do |t|
  t.string   "phone"
  t.string   "email"
  t.string   "facebook"
  t.string   "twitter"
end

Итак, у меня есть контактная информация для работы, могу ли я указать средству визуализации уценки отображать ‹%= @contact.phone %> как значение @contact.phone вместо обычного текста? Или мне нужно будет использовать для этого что-то другое, а не уценку?

Редактировать 1:

Рендеринг уценки здесь:

приложение/помощники/application_helper.rb

def markdown(text)
  options = [:hard_wrap, :filter_html, :autolink, :no_intraemphasis]
  Redcarpet.new(text, *options).to_html.html_safe
end

приложение/представления/сайты/show.html.erb

<%= markdown(site.description) %>

Редактировать 2:

Вот мое решение, спасибо. Я интегрировал ваш код в свой помощник по разметке, пока это работает.

def markdown(text)
  erbified = ERB.new(text.html_safe).result(binding)
  options = [:hard_wrap, :filter_html, :autolink, :no_intraemphasis]
  Redcarpet.new(erbified, *options).to_html.html_safe
end

person ruevaughn    schedule 13.04.2012    source источник
comment
Как вы рендерите уценку?   -  person Sergio Tulentsev    schedule 14.04.2012
comment
@Sergio Tulentsev Я отредактировал некоторую информацию, дайте мне знать, если вам нужно больше. Спасибо!   -  person ruevaughn    schedule 14.04.2012


Ответы (1)


Вы можете предварительно обработать свой Markdown с помощью ERb, а затем передать этот результат в RedCarpet. Я бы предложил поместить его в вспомогательный метод, что-то вроде этого:

module ContactsHelper
  def contact_info(contact)
    content = "Hello\n=====\n\nMy number is <%= contact.phone %>"
    erbified = ERB.new(content).result(binding)
    Redcarpet.new(erbified).to_html.html_safe
  end
end

Если контента много, вы можете подумать о написании партиала и его рендеринге, а не вставлять много HTML в строку, как я сделал выше, но это зависит от вас.

person Brandan    schedule 13.04.2012
comment
Спасибо, я поместил свой новый вспомогательный метод в вопрос под Edit 2, дайте мне знать, похоже ли это на то, что вы думали. - person ruevaughn; 14.04.2012