2017-05-11 11 views
1

나는이 :Yaml 변수 (markdown로 작성)에서 HTML Haml 파일로 데이터를 출력하는 방법은 무엇입니까? YAML 데이터 파일 <code>aaa.yml</code>에서

yyy: | 
    [foo](http://example.com) bar. 

은 내가 HAML 파일 (zzz.html.haml)에서이 데이터를 가져 싶다.

. 내가 zzz.html.haml을 할 경우

%p 
     = data.aaa.yyy 
  • 중매인은 zzz.html를 렌더링 :

    <p> [foo](http://example.com) bar</p>

2합니다. 내가 할 경우

%p 
     :markdown 
     = data.aaa.yyy 
  • 중매인은 렌더링 :

    <p><a href="http://example.com">foo</a> bar</p>

    :

    <p>= data.aaa.yyy</p>

가 어떻게 그것을 렌더링 할 수 있습니다

?

답변

1

여러분은 markdown이 포함 된 문자열을 가지고 있으며, 해당 markdown을 렌더링하고 결과를 결과에 포함하고자합니다.

한 가지 방법은 Haml :markdown 필터를 사용하는 것입니다. (당신이 시도 것 같은) 당신은 필터 내부에 정상 HAML 구문을 사용할 수는 없지만 #{...} 내부 보간을 사용할 수 있으므로 문자열이 독립 덩어리 경우 당신은

:markdown 
    #{data.aaa.yyy} 

더 좋은 방법을 할 수 markdown을 렌더링하는 도우미 메서드를 만들어 호출 할 수 있습니다. 당신의 HAML에서 다음

def markdown s 
    # I'm using kramdown here, but you can use whatever processor you prefer. 
    Kramdown::Document.new(s).to_html 
end 

:

= markdown(data.aaa.yyy) 
0

야호

은 어디든지 당신은 당신의 도우미 같은 것을 추가해야! 그런 다음

def markdown s 
    Kramdown::Document.new(s).to_html 
end 

: 첫 번째로 내가 (@matt's answer에서)이 도우미를 설치

def markdown(text) 
    Tilt['markdown'].new { text }.render 
end 

: 내 config.rb에 이미하지만 그 자체로 작동하지 않았다, this helper있다 밝혀 = markdown(foo.bar)는 일했다. 그것은 나의 날을 만들었다!! : D

+0

이 두 번째 도우미는 어떤 식 으로든 처음 참조하지 않습니다.첫 번째 기능이 왜 작동하지 않는지 모르겠지만 두 번째 기능을 추가하는 이유는 '마크 다운'정의를 덮어 쓰고 첫 번째 기능을 전혀 사용하지 않는 이유입니다. 첫 번째 도우미를 제거하면 아무 것도 변경되지 않습니다. – Rafal

+0

그리고 첫 번째 도우미를 사용하고 싶다면 모든 경우에 완전히 작동하려면 앱 컨텍스트를 추가해야합니다. [이 답변] (https://stackoverflow.com/a/44494649/1226389)을 참조하십시오. – Rafal