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

コントローラのメソッド会社のすべてのサブページにロードできるようにするにはどうすればよいですか?

4

1 に答える 1

4

ビューには、 controller_name ActionController::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のヘルパーメソッドにロールアップして、ビューをドライアップすることをお勧めします。

于 2013-03-05T20:52:52.520 に答える