2010-11-26 15 views
11

ब्रेडक्रंब नेविगेशन तत्व है जिसका प्रयोग उस उपयोगकर्ता को कहने के लिए किया जाता है जहां वे साइट पर हैं।मैं रेल 3 में गतिशील रूप से जेनरेट की गई ब्रेडक्रंब कैसे बना सकता हूं?

उदा।

घर >> परियोजनाएं >> चरण >> अपलोड।

जहां घर, परियोजनाएं, चरणों & अपलोड अलग नियंत्रक हैं।

उत्तर

25

मैं 10 की तरह साल के लिए लगभग एक ही कोड का उपयोग करें ... एएसपी में पहली यह लिखा है, तो सी #, पीएचपी, और अब रेल:

module NavigationHelper 
    def ensure_navigation 
     @navigation ||= [ { :title => 'Home', :url => '/' } ] 
    end 

    def navigation_add(title, url) 
     ensure_navigation << { :title => title, :url => url } 
    end 

    def render_navigation 
     render :partial => 'shared/navigation', :locals => { :nav => ensure_navigation } 
    end 
end 

फिर, shared/navigation.html.erb में:

<div class="history-nav"> 
    <% nav.each do |n| %> 
     <%= link_to n[:title], n[:url] %> 
    <% end %> 
    <%= link_to yield(:title), request.path, :class => 'no-link' %> 
</div> 

आपका नियमित दृश्य:

<% content_for :title, 'My Page Title' %> 
<% navigation_add 'My Parent Page Title', parent_page_path %> 

और अपने टेम्पलेट:

<html> 
<head> 
    <title> <%= yield :title %> </title> 
</head> 
<body> 
    ... 
    <%= render_navigation %> 
    ... 
    <%= yield %> 
</body> 
</html> 
+0

यह अच्छा और शुष्क है का उपयोग किए बिना अद्यतन किया जा सकता! धन्यवाद। यह सुनिश्चित करने के लिए यह जांच करेगा कि यह मेरे लिए काम करता है। धन्यवाद! – marcamillion

+0

बीटीडब्ल्यू, पहले स्निपेट के लिए, मुझे इसे कहां जोड़ना चाहिए? मेरे आवेदन नियंत्रक के लिए? – marcamillion

+2

पहला एक नया सहायक है। आप अपने कोड को किसी भी सहायक को जोड़ सकते हैं, लेकिन मुझे इसे अपने स्वयं के सहायक, 'नेविगेशनहेल्पर' पर पसंद है। –

1

पिछला जवाब <% content_for :title, 'My Page Title' %>

<div class="history-nav"> 
    <% nav.each do |n| %> 
     <% unless n.equal? nav.last %> 
     <%= link_to n[:title], n[:url] %>    
     <% else %> 
     <%= n[:title] %> 
     <% end %> 
    <% end %> 
    </div> 
संबंधित मुद्दे