2011-08-11 50 views
0

我有一個側欄會根據用戶的位置(其中包括;實際上還有用戶是誰,她的個人資料完成了多少等等)來旋轉其內容。如何根據使用的路由條件顯示側欄?

我想要的是一個幫助器,用於檢查當前頁面的控制器,操作和ID。

  • 如果控制器是JobsController動作是showindex,使用部分_sidebar_add_your_job
  • 如果控制器UsersController動作是showindex,使用部分_sidebar_add_your_cv

幫助我的簡化版本,在app/helpers/sidebar_helper.rb是:

module SidebarHelper 
    def sidebar_partial 
    if partial 
     return "sidebar_#{partial}" 
    end 
    end 

    # Determines what sidebar partial to render. 
    def partial 
    partial = nil 

    if ((section == :jobseekers) && current_user.nil?) 
     partial = :add_cv 
    elsif ((section == :employers) && current_user.nil?) 
     partial = :add_job 
    end 

    partial 
    end 

    def section url = nil 
    url = request.fullpath if url.nil? 

    section = nil 

    if (url == root_path || url.match(/^\/jobs/)) 
     section = :jobseekers 
    elsif (url.match(/^\/employer/) || url.match(/\/users\/[a-z0-9]+/)) 
     section = :employers 
    end 
    section 
    end 
end 

尤其是最後一部分,我在那裏對陣網址定期expresssions是醜陋的失敗,對相當多的情況下。最值得注意的是:users/sign_in,users/sign_up`等等。我不願意開始維護這些例外的整個黑名單,它感覺太難看,並且與路線耦合太緊密。

我該如何最好地實現一些基於URL或控制器&動作和 - 未來 - 在一些更簡單的條件下的條件部分包含,例如當前用戶的角色和狀態?

如何在控制器中對控制器及其當前頁面/請求的操作進行測試?

+1

請http://www.postal-code.com/mrhappy/blog/2007/01/ 18/rails-瞭解當前動作的視圖/並告訴它是否正在尋找 – Bohdan

+0

您基本上不在乎/ users /後面的內容,因此可以輕鬆地改進正則表達式。另外,你應該在所有的視圖和助手中使用@controller變量(可以玩)。 – socjopata

+0

@Bohdan,這確實是我正在尋找的解決方案:儘管我很容易。如果您將其粘貼爲答案,我可以接受它。謝謝。 – berkes

回答

1

請檢查this後那裏你可以找到一個簡單的方法,使電流控制器和可用的操作在您的意見

+1

鏈接已死亡 – voondo