2010-05-07 5 views
3

다음과 같은 문제가 있습니다. 렌더 할 데이터베이스에 저장된 rhtml (html은 < %% 및 < % = %> 태그 안에있는 루비와 함께 처리됩니다. 정보는 쿼리를 통해 수집됩니다. 나는 데이터베이스에서 얻은 정보를 .erb 파일 내부의 일반적인 내용처럼 평가할 수 있어야합니다. 내가 현재 가지고있는 :erb를 사용하여 변수 렌더링

<% @mymods.each do |mod| %> 
<%= render_text(mod["html"])%> 
<% end %> 

모드 [ "HTML은"]를 RHTML 코드를 포함하는 변수 쿼리에서 객체의 배열을 @mymods. 나는 현재 어떤 기능을 사용해야하는지 잘 모른다. (render_text는 물론 작동하지 않는다.)

도움을 주시면 대단히 감사하겠습니다.

은/TZer0

답변

11

당신은 파일에있는 텍스트없이 텍스트를 렌더링 할 ERB 객체를 사용할 수 있습니다.
<%= %> 태그가있는 텍스트 만 전달하면됩니다. 다음과 같은 것을 application_helper 함수로 넣을 수 있습니다.

def render_erb_text(text, args={}) 
    b = binding 
    template = ERB.new(text, 0, "%<>") 
    template.result(b) 
end 

그리고 템플릿

<%= render_erb_text("<%= %w(hi how are you).join(' - ') %>")%> 

당신은 또한 당신이 어떤보기 평가시보다이 이상의 오류를 렌더링 처리 할 수있는 컨트롤러의 텍스트를 렌더링하는 것이 좋습니다에

.

등 바인딩 변수에 대한 자세한 내용은 ERB documentation를 살펴 보자

나는이 내부적으로 작동하는 방법의 세부 사항에 익숙하지 해요,하지만에이 코드를 실행에 심각한 위험이 될 수있다 악의적 인 데이터베이스 데이터. 사용자 입력이나 검증되지 않은 소스로부터 루비 코드를 평가하는 것은 매우 신중해야합니다.

+1

도움을 주셔서 감사합니다. 죄송합니다. 죄송합니다. 아직 15 명의 담당자가 없습니다.) – TZer0

관련 문제