2013-03-05 61 views
2

我有控制器:條件顯示

class PagesController < ApplicationController 
    protect_from_forgery 
    layout "pages" 

    def index 
    end 

    def products 
    end 

    def company 
    @enable_sub_menu = true 
    end 

    def support 
    end 

    def login 
    end 
end 

路線文件:

App::Application.routes.draw do 

    root :to => 'pages#index' 

    ##Product/Search Routing 
    match "products" => "pages#products" 
    match "products/search" => 'pages#products/search' 
    match "products/search/pricing" => 'pages#products/search/pricing' 
    match "products/business/pricing" => 'pages#products/business/pricing' 
    match "products/business" => 'pages#products/business' 


    ##Company Pages Routing 
    match "company/team" => 'pages#company/team' 
    match "company/contact" => 'pages#company/contact' 
    match "company" => 'pages#company' 
    match "company/friends" => 'pages#company/friends' 

    ##Support Routes 
    match "support" => 'pages#suppprt' 


    ##Login Routes 
    match "login" => 'pages#login' 
end 

我所要做的是在任何頁面爲/company我要呈現的部分但沒有人做到這一點我用這

<%= render :partial => "pages/partials/sub_nav" if @enable_sub_menu %> 

它看起來在控制器方法檢查,看它是否應該加載sub_nav部分

它爲/company的偉大工程,但它不爲/company/company/team

我怎樣才能使其子頁面的工作負載的方法的所有子網頁公司在控制器?

回答

3

有一個在你的觀點一個輔助方法稱爲CONTROLLER_NAMEActionController::Metal

這可能會允許你根據你所在的控制器來觸發部分。

<%= render :partial => "pages/partials/sub_nav" if controller_name == "company" %> 

請注意,還有一個名爲action_name的助手,它允許您檢查當前操作。所以你可以合併它們。

<%= render :partial => "pages/partials/sub_nav" if controller_name == "company" || action_name == "company %> 

當然,你可能會想,如果語句來推出這一成在ApplicationHelper一個輔助方法DRY你的看法

+1

這就是偉大的 - 非常感謝您的提示 – 2013-03-05 21:17:30