ส่งตัวแปรไปยังส่วนย่อย, ราง 3?


140

ฉันมีห่วงเช่นนี้

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

จากนั้นในช่วงกลางของฉันฉันจะเข้าถึงโพสต์ปัจจุบันได้อย่างไร


สวัสดีเอลเลียตฉันใช้สิ่งนี้กับนั่งร้านมาตรฐาน การใช้ Inside index.html.erb เพื่อแสดง _show.html.erb โดยที่การแสดงบางส่วนมีโมดอล ทุกอย่างทำงานได้ดียกเว้นว่าเมื่อฉันกดลิงค์แสดงมันแสดง 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 %>

ในกรณีนี้มันจะเรียกโพสต์บางส่วนสำหรับทุกโพสต์ด้วยตัวแปรท้องถิ่น 'โพสต์'

คุณสามารถแสดงเทมเพลตสเปเซอร์ระหว่างแต่ละโพสต์:

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

14
ไม่ทราบเกี่ยวกับตัวเลือก: spacer_template ดีจริงๆ ขอบคุณ!
Claudio Acciaresi

11
โปรดทราบว่าไม่จำเป็นต้องใช้แฮช: locals เมื่อใช้ Rails 3 แฮชอาร์กิวเมนต์จะถูกแปลงเป็นอาร์กิวเมนต์ที่ส่งผ่านไปยังบางส่วน
superluminary

4
ฉันยังต้องการ: คนในพื้นที่จะทำงานได้ฉันกำลังใช้งาน 3.2.12
mck

1
<%= render :partial => 'post', :collection => @posts, as: :post %>จะวนซ้ำโดยอัตโนมัติpostในแต่ละส่วนของคุณดังนั้นคุณสามารถใช้postในบางส่วนของคุณเป็นตัวแปร
ahnbizcad


10

แทนที่ด้วย<%= render middle %> <%= render middle, :post => post %>จากนั้นในmiddleบางส่วนของคุณคุณสามารถเข้าถึงpostตัวแปร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.