2013-05-26 58 views
3

在我的Rails 4應用程序中,我使用devise來驗證用戶,並且我使用HAML和application_helper.rb設置了一個自定義導航欄創建器。助手中的代碼使用current_page來決定向HTML元素添加「活動」類的位置,因爲我使用的是twitter引導程序。現在我說的所有東西都可以正常工作,比如當你去到網站的根目錄時,欄中的按鈕處於活動狀態(推入),但是如果你點擊欄中的另一項並轉到pag,如/ sig_in /你會發送到該頁面,但該頁面的按鈕不活動。我不確定這是一個設計還是紅寶石問題。這裏是我的代碼:設計和current_page?

的routes.rb

devise_for :users, :path => '' 

_nav.html.haml

= navigation_link_to 'Home', root_path 

/Insert Additional Nav 

= navigation_link_to 'Sign in', new_user_session_path 

application_helper.rb

def navigation_link_to(text, path) 
    link_to text, path, class: "btn#{active_link(path)}" 
    end 

    def active_link(path) 
    ' active' if current_page?(path) 
    end 

回答

0

對我來說這是合作得非常好(我使用Rails 4中的3.0.0.rc設計寶石)

在僅routes.rb中:

devise_for :users 

我有被插入在一個_navigation.html.haml_login.html.haml。路徑助手由Devise自動提供。如果用戶已經登錄,則會出現不同的鏈接。

%li=link_to 'Registration', new_user_registration_path 
%li=link_to 'Sign in', new_user_session_path unless user_signed_in? 
-if user_signed_in? 
    %li=link_to 'Manage your registration', edit_user_registration_path 
    %li=link_to 'Logout', destroy_user_session_path, method: :delete 

希望它能幫助某種方式。