Przekaż zmienną do części, szyny 3?


140

Mam taką pętlę:

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

Następnie w środkowej części, jak uzyskać dostęp do bieżącego postu?


Cześć Elliot, używam tego na standardowym rusztowaniu. Użycie inside index.html.erb do renderowania _show.html.erb, gdzie show parts zawiera modalne. wszystko działa dobrze, z wyjątkiem tego, że kiedy naciskam link pokaż, pokazuje ten sam identyfikator zamiast różnych identyfikatorów.
uczeń

Odpowiedzi:


237

Spróbuj tego:

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

W ten sposób będziesz mieć lokalną zmienną postdostępną w części.


18
potrzebujesz tagów <% =%> nie <%%>, bo inaczej nie będzie renderowany
Ryan,

4
Pamiętaj, że potrzebujesz <%= render 'middle', :post => post %>szyn 3.1.x
Archonic,

124

Daj to częściowej jako zmienną lokalną

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

Oczywiście rails ma również skrót do renderowania kolekcji:

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

W tym przypadku wywoła częściowy post dla każdego posta z lokalną zmienną „post”

Możesz nawet renderować szablon odstępnika między poszczególnymi postami:

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

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

11
Zauważ, że hash: locals nie jest potrzebny, gdy używasz Rails 3. Hash argumentów jest konwertowane na argumenty, które są przekazywane do częściowej.
superluminarium

4
Nadal potrzebowałem: lokalny hash, aby to działało. Uruchamiam 3.2.12
mck

1
<%= render :partial => 'post', :collection => @posts, as: :post %>automatycznie przejdzie przez każdy postz twoich podrzędnych, więc możesz użyć ich postjako zmiennej.
ahnbizcad

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

Możesz teraz uzyskać dostęp do wpisu jako zmiennej lokalnej postw części


10

Wymień <%= render middle %>się <%= render middle, :post => post %>. Następnie w middleczęści możesz uzyskać dostęp do postzmiennej.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.