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.