2013-04-26 9 views
95

पर गुजरने वाले चर मैं रेल ट्यूटोरियल पर रूबी का अनुसरण कर रहा हूं और आंशिक रूप से चर को पारित करने का प्रयास करते समय एक समस्या में आया हूं।रेल 4 - आंशिक

मेरे _user आंशिक रूप

<li> 
    <%= gravatar_for user, size: 52 %> 
    <%= link_to user.name, user %> 
</li> 

इस प्रकार मैं आकार मूल्य के लिए एक संख्या में पारित करने के लिए चाहते हैं। मैं बिना किसी किस्मत के निम्नानुसार कोशिश कर रहा हूं।

<%= render @users, :locals => {:size => 30} %> 

अग्रिम धन्यवाद!

उत्तर

133

पूर्ण आंशिक वाक्य रचना प्रस्तुत करना चाहिए, तो आप स्थानीय लोगों

<%= render @users, :locals => {:size => 30} %> 

हो जाता है

<%= render :partial => 'users', :collection => @users, :locals => {:size => 30} %> 

या नए हैश वाक्य रचना

<%= render partial: 'users', collection: @users, locals: {size: 30} %> 

कौन सा मुझे लगता है कि बहुत है उपयोग करने के लिए गुजर रहे हैं अधिक पठनीय

+0

धन्यवाद @jamesw, लेकिन छवियाँ हैं अभी भी आकार 52. इसकी वजह है मेरे पास आकार आंशिक रूप से 52 तक सेट है? – dopplesoldner

+1

हां वास्तव में, आप आकार के पिछले मान को ओवरराइड कर रहे हैं। –

+1

मैं 'संग्रह' विशेषता – ImranNaqvi

146

रेल एपीआई से PartialRender पर:

डिफ़ॉल्ट मामले

आप संग्रह या लेआउट की तरह विकल्पों में से किसी का उपयोग किया जा करने के लिए नहीं जा रहे हैं प्रतिपादन, आप भी कम हाथ का उपयोग कर सकते आंशिक प्रस्तुत करने के लिए प्रस्तुत करने के डिफ़ॉल्ट।

उदाहरण:

# Instead of <%= render partial: "account" %> 
<%= render "account" %> 

# Instead of <%= render partial: "account", locals: { account: @buyer } %> 
<%= render "account", account: @buyer %> 

# @account.to_partial_path returns 'accounts/account', so it can be used to replace: 
# <%= render partial: "accounts/account", locals: { account: @account} %> 
<%= render @account %> 

# @posts is an array of Post instances, so every post record returns 'posts/post' on `to_partial_path`, 
# that's why we can replace: 
# <%= render partial: "posts/post", collection: @posts %> 
<%= render @posts %> 

तो, आप रेंडर करने के लिए इस प्रकार एक स्थानीय चर size पारित उपयोग कर सकते हैं:

<%= render @users, size: 50 %> 

और फिर _user.html.erb आंशिक में इसका इस्तेमाल करते हैं:

<li> 
    <%= gravatar_for user, size: size %> 
    <%= link_to user.name, user %> 
</li> 

ध्यान दें कि size: size:size => size के बराबर है।

+12

दूसरा प्रस्तुत करना, स्थानीय लोगों के बिना , मेरी ज़िंदगी बचाई। धन्यवाद – cassioscabral

2

आप जावास्क्रिप्ट का उपयोग कर रहे हैं तो प्रस्तुत करना escape_JavaScript("<%=render partial: partial_name, locals=>{@newval=>@oldval}%>");

0

वाक्य रचना थोड़ा अलग है, लेकिन यह मेरी राय में क्लीनर लग रहा है उपयोग करने के लिए:

render 'my_partial', locals: { title: "My awesome title" } 

# not a big fan of the arrow key syntax 
render 'my_partial', :locals => { :title => "My awesome title" } 
संबंधित मुद्दे