Rails - 如何将Helper连接到控制器模块

时间:2012-11-20 04:57:52

标签: ruby-on-rails ruby-on-rails-3

我有帮手:

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

我将Controller的一部分提取到模块:

module ApplicationController::Breadcrumbs

  def default_breadcrumbs
  ...
end

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

  ...
end

现在我想将Helper连接到Controller。我可以这样做:

class ApplicationController
  include ApplicationController::Breadcrumbs
  helper :breadcrumbs

  ...
end

它正在运作。 问题是如何封装与Breadcrumbs模块的连接?

module ApplicationController::Breadcrumbs     
  helper :breadcrumbs

  ...
end

不幸的是,这段代码没有工作“undefined method`helper'”。

2 个答案:

答案 0 :(得分:0)

首先ApplicationController将继承ActionController::Base,这就是ApplicationController继承辅助方法的原因。
现在你正在使用的模块'ApplicationController::Breadcrumbs'没有'helper'方法。因此,您必须在'ApplicationController::Breadcrumbs'模块中包含帮助程序模块才能访问帮助程序的方法。

尝试下面给出的代码:

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

module ApplicationController::Breadcrumbs
  include BreadcrumbsHelper  
  def default_breadcrumbs
  ...
end

答案 1 :(得分:0)

我确实找到了如何将helper连接到控制器模块:

module ApplicationController::Breadcrumbs     
  included { helper :breadcrumbs }

  ...
end