0

Серьезно, я понятия не имею, с чего начать. Как я могу использовать хелперные хлебники без использования драгоценных камней? Я пробовал некоторые драгоценные камни, но я предпочитаю простой хелп. Есть кто-то или какой-то учебник? Я не нашел это =/Как построить панировочные сухари в рельсах 4

Спасибо!

+1

Я надеюсь, что это поможет: http://stackoverflow.com/questions/4289272/how-do-i-create-a-dynamically-generated-breadcrumb-in-rails-3 – akz92

ответ

2

Мое решение:

navigation_helper.rb

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 => 'navigation', :locals => { :nav => ensure_navigation } 
    end 
end 

_navigation.html.erb

<ol class="breadcrumb"> 
    <% nav.each do |n| %> 
     <% unless n.equal? nav.last %> 
     <li><%= link_to n[:title], n[:url] %></li> 
     <% else %> 
     <li><%= n[:title] %></li> 
     <% end %> 
    <% end %> 
    </ol> 

application.html.erb

<%= render_navigation %> 

И любой вид:

<% content_for :title, 'My Page Title' %> 
    <% navigation_add @something.anything, '#' %> 

Хорошо? Понравилось? Дайте мне голос!

+0

Хорошее решение, я использовал его для создания панировочные сухари автоматически, пожалуйста, проверьте мой ответ. – Ghazi

1

Вы не можете это сделать.

В вашем application_helper:

def breadcrumb(&block) 
    content_tag :ol, { :class => "breadcrumb", :itemprop => "breadcrumb" } do 
     block.call 
    end 
end 

def breadcrumb_item(name = nil, url = nil, html_options = {}, &block) 
    if name or block 
     html_options[:class] = "#{html_options[:class]} active" unless url 
     content_tag :li, html_options do 
     if block 
      block.call name, url 
     else 
      url ? link_to(name, url) : name 
     end 
     end 
    end 
    end 

Теперь в представлениях вы вставляете это: (я использовал index_path и @ user.name) - вы можете вставить этот код на шоу зрения в качестве примера

<%= breadcrumb do %> 
    <%= breadcrumb_item "index", index_path %> 
    <%= breadcrumb_item @user.name %> 
<% end %> 

Теперь, когда вам нужна небольшая сухарь, вы можете просто вызвать этот trunck выше и изменить путь и переменные экземпляра @your_variable

0

Я также работал над решением Элтона Сантоса и решил, что сухари должны быть автоматическими, как история. Поэтому я изменил код:

В моей application.html.erb

<%= render_navigation %> 

В моих взглядов, я уже использовал:

<% content_for :heading do 'User Detail' end %> 

Итак, мой navigation_helper.rb выглядеть следующим образом:

module NavigationHelper 
    def navigation_add(title, url) 
    nav_list = session['navigation'].present? ? session['navigation'] : [] 
    nav_list << { 'title' => title, 'url' => url } 
    # 1. Take last 3 items only (-1 is last, not -0) 
    nav_list = nav_list[-3..-1] if nav_list.length > 3 
    # 2. Now, if first is pointing root, remove it 
    nav_list.shift if nav_list[0]['url'] == '/' 
    # 3. If last one is same as its predecessor, remove it 
    nav_list.pop if nav_list.length > 1 && (nav_list[-1]['url'] == nav_list[-2]['url']) 

    session['navigation'] = nav_list 
    end 

    def render_navigation 
    render partial: 'shared/navigation', locals: { nav_list: session['navigation'] } 
    end 
end 

и, наконец, _navigation.html.erb:

<ol class="breadcrumb"> 
    <li><%= link_to '/' do %> 
     <i class="fa fa-home"></i> Home <% end %> 
    </li> 
    <i class="fa fa-angle-double-right" style="color: #ccc; padding: 0 5px;"></i> 

    <% nav_list.each_with_index do |nav, i| %> 
    <% if i != nav_list.length-1 %> 
     <li><%= link_to nav['title'], nav['url'] %></li> 
    <% else %> 
     <li class="active"><%= nav['title'] %></li> 
    <% end %> 
    <% end %> 
</ol> 

Итак, что здесь происходит; Я сохраняю каждый заголовок страницы в сеансе и строю панировочные сундуки. Я сохраняю последние три записи только вместе с жестко закодированным для дома и удаляю повторяющиеся записи, когда они не разделены.

Смежные вопросы