0

私にはヘルパーがいます:

module BreadcrumbsHelper
  def breadcrumbs_cache_wrap(key, options, &block)
    ...
  end
end

そして、コントローラーの一部をモジュールに抽出します。

module ApplicationController::Breadcrumbs

  def default_breadcrumbs
  ...
end

class ApplicationController < ActionController::Base
  include ApplicationController::Breadcrumbs

  ...
end

ここで、ヘルパーをコントローラーに接続したいと思います。私はこのようにそれを行うことができます:

class ApplicationController
  include ApplicationController::Breadcrumbs
  helper :breadcrumbs

  ...
end

動作しています。問題は、ブレッドクラムモジュールへの接続をどのようにカプセル化するかです。

module ApplicationController::Breadcrumbs     
  helper :breadcrumbs

  ...
end

残念ながら、このコードは「未定義のメソッド`helper'」として機能していません。

4

2 に答える 2

0

まず、ApplicationController継承することになるのでActionController::BaseApplicationControllerヘルパーメソッドを継承します。
現在、使用しているモジュール'ApplicationController::Breadcrumbs'には「ヘルパー」メソッドがありません。したがって、'ApplicationController::Breadcrumbs'ヘルパーのメソッドにアクセスするには、モジュールにヘルパーモジュールを含める必要があります。

以下のコードを試してください。

module BreadcrumbsHelper
  def breadcrumbs_cache_wrap(key, options, &block)
    ...
  end
end

module ApplicationController::Breadcrumbs
  include BreadcrumbsHelper  
  def default_breadcrumbs
  ...
end
于 2012-11-20T06:35:49.173 に答える
0

ヘルパーをコントローラーモジュールに接続する方法を見つけました:

module ApplicationController::Breadcrumbs     
  included { helper :breadcrumbs }

  ...
end
于 2012-11-21T04:13:06.653 に答える