2011-01-15 12 views
139

mam pętlę takich jak:Przekaż zmienną na częściową, szynową 3?

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

Następnie w moje drugie częściowe, w jaki sposób mogę uzyskać dostęp do aktualnego post?

+0

Witam Elliot Używam tego na standardowy scaffolded. Używając wewnątrz pliku index.html.erb, wyrenderuj _show.html.erb, gdzie show partial zawiera modal. wszystko działa dobrze, z tą różnicą, że po naciśnięciu linku do pokazu wyświetlany jest ten sam identyfikator zamiast pokazywania różnych identyfikatorów. – learner

Odpowiedz

235

Spróbuj tego:

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

lubię tego będziesz mieć zmienną lokalną post dostępnych w ramach częściowego.

+18

potrzebujesz <%= %> nie <% %> znaczników, bo inaczej nie będzie renderować – Ryan

+0

Dzięki, masz oczywiście rację. Poprawione. – polarblau

+4

Pamiętaj, że potrzebowałbyś '<% = renderuj 'w środku',: post => post%>' dla szyn 3.1.x – Archonic

10

Wymień <%= render middle %> na <%= render middle, :post => post %>. Następnie w częściowej, możesz uzyskać dostęp do zmiennej post.

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

Możesz teraz uzyskać dostęp do stanowiska jako zmiennej lokalnej post w częściowym

124

Daj częściowe jako zmiennej lokalnej

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

Oczywiście, szyny ma również skrót do renderowania kolekcje:

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

W takim przypadku zostanie wywołana wartość TiAl poczta dla każdego postu o zmiennej lokalnej „post”

Można nawet uczynić szablon spacer między każdym poście:

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

Nie wiedziałem o opcji: spacer_template, naprawdę fajnie. Dzięki! –

+11

Należy zauważyć, że: mieszanie nazw lokalnych nie jest potrzebne podczas korzystania z Rails 3. Argument mieszania argumentów jest konwertowany na argumenty przekazywane do częściowego. – superluminary

+4

Nadal potrzebowałem: mieszania lokali, aby działał. Uruchomiłem 3.2.12 – mck

Powiązane problemy