Ruby on rails 包括关注的rails控制器操作
是否可以通过问题添加控制器操作 我试图通过concern包含控制器操作,但未找到: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
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。我通过实施我所关心的问题中缺少的行动来解决这个问题,这似乎是可行的。