2012-01-13 15 views
10

के अंदर रेल पहुंच का उपयोग नाम मेरे पास आंशिक है कि मैं विभिन्न पृष्ठों में उपयोग कर रहा हूं। मैं आंशिक रूप से उस आंशिक रूप से आंशिक रूप से एक निश्चित div को छिपाना चाहता हूं जो इसे प्रस्तुत कर रहा है।आंशिक

मैं एक पृष्ठ विशिष्ट जावास्क्रिप्ट फ़ाइल बनाने के बारे में सोच रहा था जो div को देखेगा और इसे छुपाएगा।

लेकिन, यदि आंशिक के अंदर दृश्य नाम/पृष्ठ नाम पुनर्प्राप्त करने का कोई तरीका था, तो यह आंशिक के लिए केंद्रीय होगा और एकाधिक पृष्ठों में एक ही जावास्क्रिप्ट फ़ाइल को लोड करने की आवश्यकता नहीं होगी।

किसी को भी एक आंशिक

उत्तर

16

जबकि @ Wahaj का जवाब काम करेगा, यदि आप क्या आप एक केंद्रीय स्थान में की जरूरत है क्या करना चाहते हैं, तो आप controller_name जांच कर सकता है और आंशिक में action_name चर दृश्य में लिप्त हों निर्धारित करने के लिए

+6

पैराम्स [: नियंत्रक] या पैराम्स [: एक्शन] की अनुशंसा नहीं की जाती है, इसके बजाय 'नियंत्रक_नाम', 'action_name' – Naveed

+1

वाह का उपयोग करें, मुझे बेवकूफ लगता है। यह भी पता नहीं था कि अस्तित्व में था। यह बात बताने के लिए धन्यवाद! – jhdavids8

+1

आप इसे फिर से प्रतिबिंबित करने के लिए अपने मूल उत्तर को बेहतर ढंग से संपादित करेंगे, या लोग मूल रूप से जो भी कहते हैं वह कर सकते हैं। –

2

अंदर यह करने के लिए आप आंशिक करने के लिए एक स्थानीय चर के रूप में शैली पैरामीटर भेज सकता है एक तरह से पता है, जहां से कॉल कर रहे हैं पर निर्भर करता पैरामीटर बदलती। कुछ की तरह:

render :partial => 'xyz', :locals => {:style => 'display:none or display:block'} 

और आंशिक में तुम कर सकते हो:

<div style=<%=style%>></div> 
+1

या शायद एक स्थानीय var 'hide_div'। आंशिक के साथ एक nicety परिभाषित किया गया है? विधि, जिसका मतलब आंशिक रूप से प्रस्तुत करने के लिए सभी कॉलों पर परिवर्तनीय की आवश्यकता नहीं होगी। –

1

सरल उपाय, अपने आंशिक अंदर (controller_name == "services" और action_name == "show" जैसे आप जानते हैं कि आप सेवा नियंत्रक के लिए दृश्य दिखाएँ में हो जाने हैं) देखें कि क्या आप आंशिक दिखाने की जरूरत है या नहीं

_partial_name.html.erb

<%= content_tag :div, :style=> "display : #{show_div? ? 'block' : 'none'}" do%> 
    html...or other stuff 
<%end%> 

और फिर अनुप्रयोग सहायक में

एप्लिकेशन/सहायक/application_helper.rb

def show_div? #you can set name of your div like 'show_sidebar_div?' 
    #decide either show this div or not 
action_name == 'show' 
end 
6

आप कर सकते हैं वर्तमान में एक हेल्पर विधि के भीतर से वर्तमान में प्रतिपादन आंशिक का नाम प्राप्त करें:

controller.view_context.view_renderer.instance_variable_get('@_partial_renderer').instance_values['path'] 
संबंधित मुद्दे