2012-04-13 3 views
0

내 Ruby on Rails 앱에서 markdown에 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

마크 다운을 어떻게 렌더링합니까? –

+0

@Sergio Tulentsev 약간의 정보를 가지고 편집했는데, 더 많은 정보가 필요하면 알려주세요. 감사! – ruevaughn

답변

2

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을 많이 삽입보다 렌더링 :이 같은 도우미 메서드에서 뭔가를 퍼팅 좋을 것 나는 위에서 한 일을했지만 그것은 당신에게 달린 것입니다.

+0

고맙습니다. 편집 2의 질문에 새로운 헬퍼 메서드를 추가했습니다. 생각했던 것처럼 보이는지 알려주세요 – ruevaughn

+0

그것이 작동한다면 저에게 도움이됩니다! – Brandan