0

是否可以在我的 Ruby on Rails 应用程序的 markdown 中使用 ruby​​?我正在使用 RedCarpet gem,我的应用程序控制器中有以下内容。

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:

在此处渲染降价:

app/helpers/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
4

1 回答 1

2

您可以使用 ERb 预处理您的 Markdown,然后将该结果传递给 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,但这取决于您。

于 2012-04-13T23:27:29.227 回答