2012-02-24 2 views
0

을 거치지 않고 파셜 내에서 렌더링, 나는 각 템플릿에 대해 별도의 부분을 렌더링 다음 부분 지문 내에서내 도우미 메서드에서 지역 변수

structure="" 
if(@page.theme_set = 1)       #line 1 
    render :partial => "first_theme.html", :locals => {:structure => structure} 
else 
    render :partial => "second_theme.html", :locals => {:structure => structure} 
end 
concat(structure)        #line 2 

, 나는이 작업을 수행;

<% structure << header %> 
<% structure << content_for_first_theme %> 
<% structure << footer %> 

3 가지 모두가 도우미의 메소드입니다. 그러나 1 행과 2 행을 부분으로 이동하면 구조가 렌더링되지 않습니다. 부분 변수에 로컬 변수를 초기화하고 전달하는 대신 부분 변수 내에서 렌더링하는 것을 원하지 않습니다. 내가 어디로 잘못 가고 있니?

답변

0

자세한 내용을 알려주십시오 ..이 주어진 정보로 명확하지 않습니다. 내가보기에 구조에 HTML 문자열을 표시하고자하는 것을 이해했습니다. 시도하십시오 <%= raw structure %>. 나는 당신의 질문에 대답했는지 안했는지 확신하지 못합니다!

0
아마

내가 읽은 가장 혼란 질문 중 하나,하지만 당신은 이동 얻을 도움이 될 수 있습니다 여기에 몇 가지가 있습니다 : 조건이 항상 true로 평가한다면

먼저, (이중 등호를 사용은 = =)를 사용하여 평등을 찾습니다. 당신이 (부분) 뷰에서 뭔가를 렌더링하려는 경우

if(@page.theme_set = 1) #this will always evaluate to true, use double equals (==) to find equality. 

는 다음, 당신은 당신이 ERB 태그 <%에 등호를 사용하지 않는 한 아무 것도 표시하지 않을거야 =%>

<%= structure << footer %> 

마지막으로 동일한 로컬 변수를 통해이 모든 작업을 수행하고 partial에 대한 참조를 전달하는 것으로 나타납니다. 이 경우 인스턴스 변수 @ structure 만 있으면 충분하므로 컨트롤러, 뷰 및 도우미가 사용할 수 있으므로 통과 할 필요가 없습니다.