2011-01-15 5 views
139

그런 루프가 있습니다.변수를 부분 레일에 전달합니다 (레일 3)?

<% @posts.each do |post| %> 
    <% render middle %> 
<% end %> 

그러면 중간 중간 부분에서 현재 게시물에 어떻게 액세스합니까?

+0

안녕하세요 엘리엇 내가 표준 스캐 폴딩에이를 사용하고 있습니다 : 로컬 변수 '포스트'

심지어 각 게시물 사이에 스페이서 템플릿을 렌더링 할 수와 모든 게시물에 대한 TiAl의 게시물. index.html.erb 내부를 사용하여 _show.html.erb를 렌더링합니다. 여기서 show partial은 모달을 포함합니다. show link를 누를 때마다 다른 ID를 표시하는 대신 동일한 ID를 표시한다는 것을 제외하고는 모든 것이 올바르게 작동합니다. – learner

답변

235

이 시도 : 이것처럼

<% @posts.each do |post| %> 
    <%= render 'middle', :post => post %> 
<% end %> 

당신이 부분 내에서 사용할 로컬 변수 post을해야합니다.

+18

<%= %>이 아닌 <% %> 태그가 필요합니다. 그렇지 않으면 렌더링되지 않습니다. – Ryan

+0

감사합니다. 물론 옳습니다. 수정 됨. – polarblau

+4

레일 3.1.x의 경우'<% = render 'middle', : post => post %>'가 필요합니다. – Archonic

10

<%= render middle %><%= render middle, :post => post %>으로 바꿉니다. 그런 다음 middle 부분에서 post 변수에 액세스 할 수 있습니다.

14
<% @posts.each do |post| %> 
    <% render middle, :post => post %> 
<% end %> 

이제, 지역 변수 물론

<%= render :partial => 'middle', :locals => { :post => post } %> 

같은 부분에 레일 부분

124

에서 지역 변수 post로 포스트 액세스를 제공 할 수 있습니다 또한 렌더링에 대한 바로 가기가 있습니다 소식 모음 :

<%= render :partial => 'post', :collection => @posts %> 

이 경우에는

<%= render :partial => 'post', :collection => @posts, :spacer_template => 'post_divider' %> 
+14

: spacer_template 옵션에 대해서는 몰랐습니다. 정말 좋았습니다. 감사! –

+11

레일스 3을 사용할 때 : locals 해시가 필요하지 않음에 유의하십시오. 인수 해시는 부분으로 전달되는 인수로 변환됩니다. – superluminary

+4

여전히 필요 : 지역 주민이 작동하도록 해시되었습니다. 실행 중입니다. 3.2.12 – mck