2017-11-24 24 views
1

가 나는 gem install sinatraRuby와 Sinatra를 사용하여 HAML을 "내부"또는 "인라인"방식으로 사용할 수 있습니까?

gem install haml 한 적이 그리고 난이

require 'sinatra' 

get '/abc2' do 
"<b>aaaaaaaaaaaaa</b>" 
end 

파일 .rb이 지금은 HTML의하지만 HAML에서 그 라인을 원하는 말한다. 아니라 외부

내가

get '/abc' do 
    haml :index # /views/index.haml 
end 

을 할 수있는 그리고 index.haml이 HAML %b aaaaaaa

의 라인을 가질 수 그러나 나는 내 루비 파일 자체에 %b aaaaaaa을 포함 할 수있는 방법이 알고 그것이 렌더링되었습니다. 예를 들어 파일을 참조하지 않아도됩니다. /views/index.haml을 참조하지 않고도?

CSS와 마찬가지로 외부 CSS를 사용할 수도 있고 HTML 파일 내부에 내부 CSS를 가질 수도 있습니다. 마찬가지로 자바 스크립트를 사용하면 외부에서 자바 스크립트를 가져올 수도 있고 HTML 파일 내부에 넣을 수도 있습니다. .rb 파일에 HAML을 내부적으로 사용하는 것에 대해 묻습니다. 가능한가?

나는 HAML이 데이터를 주입하기위한 템플릿 언어로 사용된다는 것을 알고 있지만 HTML을보다 간결하게 작성하기도합니다.

답변

1

당신과 같이 HTML하는 HAML을 변환 Haml::Engine#render을 사용할 수 있어야합니다. 이것은 히어 닥합니다 (<<-Haml 라인과 닫는 Haml 사이의 모든 사용

get '/abc2' do 
    Haml::Engine.new(<<-Haml).render(binding) 
    %b aaaaaa 
    Haml 
end 

binding는 기본적으로 참조하는 특별한 변수 현재 범위에. 작은 앱의

+0

오류가 발생했습니다. NameError ... 초기화되지 않은 상수 Haml httft://i.imgur.com/zoEseZF.png – barlop

+0

@barlop '필요'haml'' 먼저 –

+0

아, 작동, 감사합니다! – barlop

2

당신은 외부 파일이 없습니다 귀하의 스크립트의 끝에서보기를 추가 할 수 있습니다.

get '/abc' do 
    haml :hello 
end 
__END__ 
@@ hello 
%h1= "Hello there"