2012-04-13 56 views
0

在我的Ruby on Rails应用程序中是否可以使用ruby进行降价?我正在使用RedCarpet gem,并且在我的应用程序控制器中有以下内容。红宝石可以降价吗? Ruby on Rails应用程序

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 
+0

你是如何渲染降价? – 2012-04-13 23:23:26

+0

@Sergio Tulentsev我编辑了一些信息,让我知道你是否需要更多。谢谢! – ruevaughn 2012-04-13 23:28:07

回答

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的我已经完成了,但是取决于你。

+0

谢谢,我在编辑2下的问题中提出了我的新帮手方法,让我知道如果这看起来像你在想什么 – ruevaughn 2012-04-14 02:49:30

+0

如果它适合你,它适用于我! – Brandan 2012-04-14 14:36:46