Ruby on rails 包括关注的rails控制器操作

Ruby on rails 包括关注的rails控制器操作,ruby-on-rails,Ruby On Rails,是否可以通过问题添加控制器操作 我试图通过concern包含控制器操作,但未找到: module Wizbang module ActsAsWizbang extend ActiveSupport::Concern included do def foo # do something end end end 我已将适当的路由添加到我的路由文件中,但它在控制器上找不到操作 当我在控制器中包含此代码时 class Simple

是否可以通过问题添加控制器操作

我试图通过concern包含控制器操作,但未找到:

module Wizbang
  module ActsAsWizbang
    extend ActiveSupport::Concern

    included do

      def foo
        # do something
      end
    end
end
我已将适当的路由添加到我的路由文件中,但它在控制器上找不到操作

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

class SimpleController < ApplicationController

  include Wizbang::ActsAsWizbang

end
class SimpleController
我收到消息:


找不到SimpleController的操作“foo”。

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

module Wizbang
  module ActsAsWizbang
    extend ActiveSupport::Concern

    def foo
      # do something
    end
  end
end

仔细检查include语句是否正确解析

我最近陷入了这个兔子洞,但我的问题不是我做的担心是错误的-这是因为我使用的include语句是不正确的,但这个错误不知何故被吞没了,我看到了这一点。我最终得到了如下结果,但你的情况可能会有所不同

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


module Api::V1::Bar
  class BazController < ActionController::API
    include Api::V1::Concerns::Foo
模块Api::V1::关注点 模块Foo 扩展ActiveSupport::关注点 ... 模块Api::V1::Bar 类控制器
我已经尝试过了,但仍然得到了相同的错误。如果它应该是一个类方法(这是错误所暗示的),你不需要将
def foo
块包装在
模块类方法
块中吗?@SteveRowley错误消息并不暗示这一点。控制器操作必须是实例方法,而不是类方法。错误消息表示在
SimpleControl
上没有定义实例方法
foo
。看起来该方法已定义(甚至可调用),但未将其识别为操作,\u find\u action\u name返回nil,从而导致错误。我不知道如何正确注册它。这是错误返回的呼叫:我怀疑这是一个问题bug。我通过实施我所关心的问题中缺少的行动来解决这个问题,这似乎是可行的。