एक आंशिक, रेल 3 में एक चर पास?


140

मेरे पास एक लूप है जैसे:

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

फिर मेरे मध्य आंशिक में, मैं वर्तमान पोस्ट का उपयोग कैसे करूं?


हैलो इलियट मैं इसे मानक मचान पर उपयोग कर रहा हूं। Index.html.erb के अंदर _show.html.erb को रेंडर करने के लिए उपयोग करना जहाँ आंशिक रूप से शो होता है। हर चीज ठीक काम कर रही है, सिवाय इसके कि जब मैं शो लिंक दबाता हूं, तो वह अलग-अलग आईडी दिखाने के बजाय एक ही आईडी दिखा रहा है।
शिक्षार्थी

जवाबों:


237

इसे इस्तेमाल करे:

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

इस तरह आप postआंशिक के भीतर उपलब्ध एक स्थानीय चर होगा।


18
आपको <% =%> नहीं <%%> टैग चाहिए अन्यथा यह रेंडर नहीं करेगा
रयान

4
ध्यान रखें, आपको <%= render 'middle', :post => post %>रेलिंग के लिए 3.1.x की आवश्यकता होगी
आर्कटिक

124

इसे स्थानीय चर के रूप में आंशिक रूप से दें

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

बेशक, रेल के पास संग्रह प्रदान करने के लिए एक शॉर्टकट भी है:

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

इस स्थिति में यह स्थानीय चर 'पोस्ट' के साथ हर पोस्ट के लिए आंशिक पोस्ट को कॉल करेगा

आप प्रत्येक पोस्ट के बीच स्पेसर टेम्पलेट भी दे सकते हैं:

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

14
के बारे में पता नहीं था: spacer_template विकल्प, वास्तव में अच्छा है। धन्यवाद!
क्लाउडियो अकियारेसी

11
ध्यान दें: रेल 3 का उपयोग करते समय स्थानीय हैश की जरूरत नहीं होती है। तर्क हैश को उन तर्कों में बदल दिया जाता है जो आंशिक रूप से पारित हो जाते हैं।
superluminary

4
मैं अब भी जरूरत: यह काम करने के लिए के लिए स्थानीय लोगों के हैश .. मैं चल रहा हूँ 3.2.12
mck

1
<%= render :partial => 'post', :collection => @posts, as: :post %>स्वचालित रूप से postआपके आंशिक रूप से प्रत्येक के माध्यम से लूप करेगा , इसलिए आप postचर के रूप में अपने आंशिक में उपयोग कर सकते हैं ।
अहानिबेकद

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

अब आप postआंशिक में स्थानीय चर के रूप में पोस्ट का उपयोग कर सकते हैं


10

बदलें <%= render middle %>के साथ <%= render middle, :post => post %>। फिर अपने middleआंशिक में, आप postचर का उपयोग कर सकते हैं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.