包括轨道控制器动作

时间:2015-01-01 22:49:42

标签: ruby-on-rails

是否可以通过关注点添加控制器操作?

我试图通过关注包含一个控制器动作,但它没有找到:

module Wizbang
  module ActsAsWizbang
    extend ActiveSupport::Concern

    included do

      def foo
        # do something
      end
    end
end

我已将适当的路线添加到我的路线文件中,但它无法在控制器上找到该操作。

当我在控制器中包含此代码时

class SimpleController < ApplicationController

  include Wizbang::ActsAsWizbang

end

我收到消息:

The action 'foo' could not be found for SimpleController.

2 个答案:

答案 0 :(得分:2)

如果要定义混合到类中的方法,只需在模块中定义它们即可。它们不会进入included块:

module Wizbang
  module ActsAsWizbang
    extend ActiveSupport::Concern

    def foo
      # do something
    end
  end
end

答案 1 :(得分:0)

仔细检查您的include语句是否可以正确解析。

最近我掉进了这个兔子洞,但是我的问题不是我做错了问题-这是因为我使用的include语句不正确,但是错误以某种方式被吞噬了,我看到了。我最终得到了类似以下内容,但您的情况可能有所不同。

module Api::V1::Concerns
  module Foo
    extend ActiveSupport::Concerns
...


module Api::V1::Bar
  class BazController < ActionController::API
    include Api::V1::Concerns::Foo