Bir değişkeni kısmi raylara 3 geçirin.


140

Böyle bir döngü var:

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

Sonra orta kısmi olarak, mevcut gönderiye nasıl erişebilirim?


Merhaba Elliot Ben bunu standart iskele üzerinde kullanıyorum. _Show.html.erb dosyasını göstermek için içeride index.html.erb komutunu kullanarak burada kısmi gösterme kip içerir. şovu göster tuşuna bastığımda, farklı kimlikleri göstermek yerine aynı kimliği göstermesi dışında her şey iyi çalışıyor.
öğrenci

Yanıtlar:


237

Bunu dene:

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

Bunun gibi post, kısmi içinde yerel bir değişkeniniz olacaktır .


18
<% =%> değil <%%> etiketine ihtiyacınız var, yoksa görüntülenmeyecek
Ryan

4
Unutmayın, <%= render 'middle', :post => post %>raylar 3.1.x
Archonic

124

Kısmi yerel değişken olarak ver

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

Elbette, rayların koleksiyonları oluşturmak için bir kısayolu vardır:

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

Bu durumda, yerel değişken 'post' ile her gönderi için kısmi gönderi çağırır.

Her gönderi arasında bir boşluk şablonu bile oluşturabilirsiniz:

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

14
Hakkında bilmiyordum: spacer_template seçeneği, gerçekten güzel. Teşekkürler!
Claudio Acciaresi

11
Rails 3 kullanılırken: locals karma değerine gerek olmadığını unutmayın. Bağımsız değişken karma değeri, kısmi olarak geçirilen bağımsız değişkenlere dönüştürülür.
superluminary

4
Hala ihtiyacım var: çalışması için yerliler hash .. Ben koşuyorum 3.2.12
mck

1
<%= render :partial => 'post', :collection => @posts, as: :post %>postkısmi öğelerinizde otomatik olarak her biri arasında geçiş yapar , böylece postkısmi öğenizde değişken olarak kullanabilirsiniz .
ahnbizcad

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

Artık postyayına kısmi yerel değişken olarak erişebilirsiniz


10

Değiştir <%= render middle %>ile <%= render middle, :post => post %>. Sonra middlekısmi olarak, postdeğişkene erişebilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.