लोग रूबी ऑन रेल्स में विचारों के लिए उदाहरण चर का उपयोग न करने का सुझाव क्यों देते हैं


12

मैं क्यों सुनता हूं कि नियंत्रकों और विचारों के बीच उदाहरण चर साझा करना अच्छा नहीं है। मुझे यह पसंद है क्योंकि मैं @ के माध्यम से तुरंत देख सकता हूं कि नियंत्रक से कुछ आ रहा है। मुझे यहां नियंत्रकों में हेल्पर्स का उपयोग करने का एक अच्छा तरीका दिखाई देता है: http://www.stephencelis.com/2008/09/06/rails-controllers-views-and-variables.html । लेकिन मैं उस हिस्से के लिए कैनकन का उपयोग कर रहा हूं।

जवाबों:


11

इस विचार को रेल सर्वोत्तम प्रथाओं में रखा गया था: उदाहरण चर को स्थानीय चर के साथ बदलें

मूल रूप से यदि आप कई भाग का उपयोग नहीं करते हैं या प्रत्येक नियंत्रक पद्धति के लिए एक सादा दृश्य है, तो दृश्य में केवल चर चर का उपयोग करने से वास्तव में कोई परेशानी नहीं होगी।

फिर भी, यदि आप कई भाग का उपयोग करते हैं और इसलिए आपके नियंत्रक में कई उदाहरण चर घोषित किए गए हैं ..., तो यह कम भ्रमित हो सकता है यदि आप नियंत्रक (उदाहरण) को पार करने के विकल्प का उपयोग करते हैं, तो स्पष्ट रूप से भागांकनों के लिए। इस तरह से - आंशिक दृश्य में काम करते समय - आपके पास उस चर / ऑब्जेक्ट का एक स्पष्ट संदर्भ होता है जिसे आप उस के साथ काम करना चाहते हैं जो पृष्ठ के निर्माण में शामिल 'सभी' भाग के साथ साझा नहीं किया जाता है।

आखिरकार, आप इसे संभाल सकते हैं जैसे आप इसे संभालना चाहते हैं, कोई भी आपको यह करने के लिए नहीं कहेगा। हालाँकि, मेरा व्यक्तिगत विचार यह है कि मुझे अपने धारावाहिकों / विचारों में स्पष्ट रूप से संदर्भ होने का विचार पसंद है जो अन्य चर के साथ भ्रमित नहीं हो सकते।


5

आप globalसंदर्भ द्वारा पारित चर या चर से सादृश्य प्राप्त कर सकते हैं , और कार्यों के रूप में भाग के बारे में सोच सकते हैं। उदाहरण के लिए वेरिएबल का उपयोग करना वैसा ही होता है जैसे कि वेरिएबल को फंक्शन के लिए दिया गया है क्योंकि यह प्रो और कॉन के संदर्भ में है

# controller 
def index
  @var = 1
end

#view index.html.erb 
<%= @var %><br/>
<%= render 'foo' %><br/>
<%= @var %>

#partial _foo.html.erb
<%= @var = 2 %>

परिणाम होगा

1
2
2

आप ऐसा व्यवहार चाहते हैं, लेकिन ज्यादातर मामलों में आपको इसकी आवश्यकता नहीं होगी। और इस तरह से बग को पेश करना आसान है और उन्हें ट्रैक करना कठिन है। इसीलिए इसकी अनुशंसा की जाती है, क्योंकि यह दृश्य और भाग में उपयोग किए जाने वाले चर के दायरे को अलग करता है:

#view index.html.erb 
<%= @var %><br/>
<%= render 'foo', var: @var %><br/>
<%= @var %>

#partial _foo.html.erb
<%= var = 2 %>

परिणाम:

1
2
1

2
यह एक अच्छा बिंदु है, मैंने चर की उत्परिवर्तन के बारे में नहीं सोचा था। मेरे पास विचारों को चर "नियंत्रक" पेश करने की धारणा थी लेकिन उदाहरण के चर निश्चित रूप से बग को संशोधित कर सकते हैं यदि वे संशोधित किए जाते हैं।
अमला
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.