2010-01-25 14 views
5

मेरे वेब पृष्ठों में दो भाग होते हैं, आइए ऊपर और नीचे कहें (हेडर और पाद लेख को छोड़कर - वे पृष्ठों पर लगातार हैं)। कार्रवाई के आधार पर उन हिस्सों को गतिशील रूप से उत्पन्न करने का सबसे अच्छा अभ्यास क्या है?दो भाग रेल लेआउट

एक दृष्टिकोण जो मैंने ऊपर आया है, नीचे के लिए शीर्ष और आंशिक देखने के लिए है; शीर्ष के लिए लेआउट कॉल उपज में और नीचे के लिए आंशिक प्रस्तुत करें। कार्रवाई के आधार पर आंशिक रूप से आंशिक रूप से प्रतिस्थापित किया गया है।

सुनिश्चित नहीं है कि यह करने का सबसे अच्छा तरीका है।

उत्तर

8

मुझे लगता है कि आपका विचार ठीक है। अपने विचार में आप कर सकता है:

<%- content_for :top do -%> 
    […] 
<%- end -%> 

<%- content_for :bottom do -%> 
    <%= render @partial_name %> 
<%- end -%> 

बेशक आप चाहे आंशिक अस्तित्व की जाँच करें और कुछ डिफ़ॉल्ट व्यवहार प्रदान करना चाहिए। लेकिन मुझे लगता है कि आप वैसे भी इसके बारे में जानते हैं।

और फिर अपने लेआउट में:

<div id="top"> 
    <%= yield :top %> 
</div> 

<div id="bottom"> 
    <%= yield :bottom %> 
</div> 
+0

क्षमा करें, आपके प्रश्न को पहले स्थान पर पर्याप्त रूप से पर्याप्त नहीं पढ़ा। मेरे जवाब को संपादित किया ताकि यह आपके लिए अधिक प्रश्न से संबंधित होगा। –

+0

मुझे आपका दृष्टिकोण पसंद है - यह एक कोशिश करेगा। धन्यवाद। –

1

यहाँ मैं पहले उपयोग किए गए एक दृश्य डीएसएल का एक बहुत ही सरलीकृत संस्करण है। हमारे लिए अच्छा काम किया। हकीकत में हमने सहायक विधियों को पैरामीटर किया ताकि हम फ्लाई पर कई लेआउट आंशिक रूप से चुन सकें (साइडबार वाले पेज, एकाधिक कॉलम इत्यादि)।

# app/views/shared/_screen.erb 
<div id="screen"> 
    <div class="screen_header"> 
<%= yield :screen_header %> 
    </div> 
    <div class="screen_body"> 
<%= yield :screen_body 
    </div> 
    <div class="bottom"> 
    <%= yield :footer %> 
    </div> 
</div> 

# app/helpers/screen_helper.rb 
module ScreenHelper 

def screen(&block) 
    yield block 
    concat(render :partial => 'shared/screen') 
end 

def screen_header 
    content_for :screen_header do 
    yield 
    end 
end 

def screen_body 
    content_for :screen_body do 
    yield 
    end 
end 

def footer 
    content_for :footer do 
    yield 
    end 
end 
end 

# app/views/layouts/application.erb 
# only showing the body tag 
<body> 
    <%= yield :layout 
<body> 

# Example of a page 
# any of the sections below (except screen) may be used or omitted as needed. 
# app/views/users/index.html.erb 
<% screen do %> 
    <% screen_header do %> 
    Add all html and/or partial renders for the header here. 
    <%end%> 
    <% screen_body do %> 
    Add all html and/or partial renders for the main content here. 
    <% end %> 
    <% footer do %> 
Add all the html and/or partial renders for the footer content here. 
    <% end %> 
<% end %> 
संबंधित मुद्दे