2013-01-19 117 views
0

我試圖讓我的麪包屑按照我的導航歷史,通過不同的控制器breadcrumbs_on_rails渲染兩次

應用控制器

add_breadcrumb 'Home', root_path 

在我public_pages控制器

class PublicPagesController < ApplicationController 


def index 

end 

def news 
add_breadcrumb "News", news_path 
add_breadcrumb "Contact us", contact_path 
end 

def contact_us 
add_breadcrumb "News", news_path 
add_breadcrumb "Contact us", contact_path 
end 

,所以我有另一個控制器稱爲private_pages,只有在用戶登錄時纔可以訪問,並且這個private_pages具有自己的root_path,

我怎麼會顯示麪包屑在不同的控制器訪問不同的動作時

感謝

+0

在您的問題中是否存在拼寫錯誤?你正在調用'add_breadcrumb' 4次,並且它的渲染速度是預期的兩倍(Home/News/Home/News)。那是對的嗎?你能否詳細說明「歷史」問題? –

+0

不,第一個問題是我只是在操作中或控制器的頂部調用add_breadcrumb,文檔似乎表明您將它添加到堆棧頂部,然後調用每個單獨的操作。 – Richlewis

+0

您應該將其添加到操作中。控制器級別的調用將在每個動作上運行,並且如果您也在調用動作,則會導致重複。 –

回答

1

首先,home麪包屑添加到您的ApplicationController作爲應登記請求。如果您的應用程序在這方面不公開,那麼請忽略這一點,並在方法之前將麪包屑放在您的PublicPagesController之內。

然後更新您的PublicPagesController

class PublicPagesController < ApplicationController 

    def index 
    end 

    def news 
    # to show Home/Contact Us/News 
    add_breadcrumb "Contact Us", news_path 
    add_breadcrumb "News", news_path 
    end 

    def contact_us 
    add_breadcrumb "Contact Us", news_path 
    end 

end 

上述假設add_breadcrumb "Home", news_path叫你ApplicationController

在問候bootstrap衝突或融合,看到這兩個:

https://github.com/weppos/breadcrumbs_on_rails/issues/24
https://gist.github.com/2400302

如果您要根據用戶是否正在或者沒有登錄修改home麪包屑,添加一個before_filter到您的ApplicationController

before_filter :set_home_breadcrumb 

def set_home_breadcrumb 
    if user_signed_in? 
    add_breadcrumb "Home", :user_home_path 
    else 
    add_breadcrumb "Home", :root_path 
    end 
end 
+0

謝謝你的回答,但它仍然沒有按照我的路線,即主頁/聯繫我們,所以它不保留我的導航歷史,它確實這樣做,我猜?另外我已經安裝了一個.rb文件,就像gisthub示例中的 – Richlewis

+0

你能解釋一下'導航歷史'是什麼意思嗎?有了上面的內容,你至少應該看到「家/新聞」,沒有重複的麪包屑。 –

+0

好吧,如果我在主頁上,它應該顯示Home作爲我的麪包屑。當我導航聯繫我們,然後我期望主頁/聯繫我們,如果我然後導航到新聞我期望主頁/聯繫我們/新聞和回答你的問題是我可以看到主頁/聯繫我們此刻 – Richlewis