2012-11-21 2 views
0

보기에 인라인 HTML을 변수에 넣을 수 있습니까? 이런 식으로 뭔가 : 변수에 인라인 HTML 넣기

<% t = content_to_var do %> 
    <h1>The title</h1> 
<% end %> 

<% my_var = content_to_var do %> 
    <p>Watch this fine results:</p> 
    <table> 
    <tr><td>Value 1.1</td><td>Value 1.2</td></tr> 
    <tr><td>Value 2.1</td><td>Value 2.2</td></tr> 
    <tr><td>Value 3.1</td><td>Value 3.2</td></tr> 
    </table> 
<% end %> 

<%= render 'partial', { title: t, contents: my_var } 

내가 정확히 "content_to_var"라는 기능의 부재에 대해 알고 있음을 유의하시기 바랍니다. 예를 들어 언급 된 것입니다.

나는 content_for와 yield에 대해 알고 있지만, 지역 주민들도 똑같이하고 싶다.

내가 생각 그것은 추한 모습

my_var = '<table><tr><td>Value 1.1</td><td>Value 1.2</td></tr></table>'.html_safe 

할 좋아하지 않는다. 레일의 이전 버전에서

+0

왜 이러한 변수를 부분 변수로 전달 하시겠습니까? 보기 (및 부분)의 개념은 주로 정적 HTML (또는 XML 등)을 포함하고 변수를 인라인으로 추가한다는 것입니다. – Flauwekeul

답변

1

당신이 할 수있는

<% t = capture do %> 
    <h1>The title</h1> 
<% end %> 

가 최신 버전

+0

예! 그것은 3.2에서 작동합니다. 넌 나를 구했다. – Paul

+1

제 의견으로는 그렇게 깨끗하지는 않습니다. 당신을 위해 모든 상황을 알지 마십시오. 그러나 나는 캡쳐를 부분적으로 움직 였고 (캡쳐를 사용하지 않음), 그것을 해결하기 위해 지역 변수/인스턴스 변수를 사용했습니다. 또는 부분 대신 도우미 메소드를 작성하여 rhtml의 기본 루프에서 사용했습니다. – 244an

+0

나는 부분적인 일없이 그 일을 처리했다. 각 문자열이 캡처에 의해 형성된 배열을 정의한 다음 "each"를 사용했습니다. 응답 한 모든 사람들 덕분에 최적의 솔루션을 선택하는 데 도움이되었습니다. – Paul

2

이유는 단지 파셜을 렌더링하지에 대해 몰라? 그것이 그들이 만들어내는 것입니다.

<% t = render :partial => 'title', :title => 'The title' %> 
<% my_var = render :partial => 'values', :values => @values %> 

<% render :partial => {title: t, contents: my_var } %> 

그리고 완전성에 대해

, 당신의 _title.html.erb이 도움이

<h1><%= title %></h1> 

희망과 같습니다

당신이 뭔가를 할 수 있습니다.

+0

배열에서 값을 취하는 루프에서 같은 부분을 렌더링해야합니다. – Paul

+0

나는 그 코멘트로 당신이하고 싶은 말을 이해하지 못합니다. 루프에서 부분이 렌더링되는 예제를보고 싶습니까? – nathanvda