변수를 부분 레일 3에 전달 하시겠습니까?


140

나는 그런 루프를 가지고있다 :

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

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


안녕하세요 엘리엇 저는 표준 스캐 폴딩에서 이것을 사용하고 있습니다. 내부에 index.html.erb를 사용하여 show partial에 모달이 포함 된 _show.html.erb를 렌더링합니다. show link를 누르면 다른 id를 표시하는 대신 동일한 id를 표시한다는 점을 제외하고는 모든 것이 잘 작동합니다.
학습자

답변:


237

이 시도:

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

이와 같이 post부분 내에서 로컬 변수를 사용할 수 있습니다.


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

4
명심하십시오, 당신은 필요 <%= render 'middle', :post => post %>3.1.X 레일
Archonic에게

124

부분 변수에 지역 변수로 제공

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

물론 레일에는 컬렉션 렌더링을위한 바로 가기도 있습니다.

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

이 경우 지역 변수가 'post'인 모든 게시물에 대해 부분 게시물을 호출합니다.

각 게시물 사이에 스페이서 템플릿을 렌더링 할 수도 있습니다.

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

14
: spacer_template 옵션에 대해 몰랐습니다. 정말 좋습니다. 감사!
Claudio Acciaresi

11
Rails 3을 사용할 때는 : locals 해시가 필요하지 않습니다. 인수 해시는 부분으로 전달되는 인수로 변환됩니다.
superluminary January

4
나는 아직도 필요 : 작동하도록에 대한 지역 주민의 해시 .. 내가 3.2.12 실행 해요
MCK

1
<%= render :partial => 'post', :collection => @posts, as: :post %>post부분에서 각각 을 자동으로 반복 하므로 post부분에서 변수로 사용할 수 있습니다 .
ahnbizcad

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

이제 post부분에서 지역 변수로 게시물에 액세스 할 수 있습니다


10

교체 <%= render middle %>와 함께 <%= render middle, :post => post %>. 그런 다음 middle부분적으로 post변수에 액세스 할 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.