Ruby on rails Rails共享控制器操作
我在构建控制器问题时遇到问题。我希望关注扩展可用的类操作 假设我有控制器“SamplesController”Ruby on rails Rails共享控制器操作,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我在构建控制器问题时遇到问题。我希望关注扩展可用的类操作 假设我有控制器“SamplesController” class SamplesController < ApplicationController include Searchable perform_search_on(Sample, handle: [ClothingType, Company, Collection, Color]) end 而且,尽管设置了一个路由,我还是得到了错误“无法为SamplesContr
class SamplesController < ApplicationController
include Searchable
perform_search_on(Sample, handle: [ClothingType, Company, Collection, Color])
end
而且,尽管设置了一个路由,我还是得到了错误“无法为SamplesController找到操作”筛选器“
我想这可能与我是否包括或扩展模块有关。我尝试使用extend,但也出现了同样的错误
我仍然需要能够在每个控制器的基础上为模块提供一些配置选项。有没有可能实现我在这里的目标
感谢您的帮助尝试从模块
ClassMethods
中删除这些方法。这使它们成为实例方法。尝试从模块ClassMethods
中删除这些方法。这就是使它们成为实例方法。您应该将操作
传递给块,并对类方法
块执行搜索
module Searchable
extend ActiveSupport::Concern
class_methods do
def perform_search_on(klass, associations = {})
.............
end
end
included do
def filter
respond_to do |format|
format.json { render 'api/search/filters.json' }
end
end
end
end
当您的可搜索
模块包含
方法时,对
执行搜索和过滤操作 您应该将操作
传递到块,并对类方法
块执行搜索
module Searchable
extend ActiveSupport::Concern
class_methods do
def perform_search_on(klass, associations = {})
.............
end
end
included do
def filter
respond_to do |format|
format.json { render 'api/search/filters.json' }
end
end
end
end
当您的可搜索
模块包含
方法时,对
执行搜索和过滤操作 您必须在extend ActiveSupport::Concerndef self.included(base)base.extend(ClassMethods)end之后编写此文件
这对您不起作用吗?@PardeepDhingra否,请你发布一个完整的答案,以便我能确定你在做什么?请检查我是否发布了完整的答案你必须在extend ActiveSupport::Concerndef self.included(base)base.extend(ClassMethods)end
之后编写此内容。这对你不起作用吗?@PardeepDhingra否,请你发布一个完整的答案,这样我可以确定你在做什么?请检查我已经发布了完整的答案answer@cortext但我需要包括模块的每个控制器的配置选项…@cortext但我需要包括模块的每个控制器的配置选项…我缺少什么?SamplesController的未定义方法“执行搜索”:Class@rico_mac将perform\u search\u on
传递给class\u方法do…end
就像更新的答案一样。谢谢,这样就行了-但是,在我接受之前,您能告诉我在perform\u search\u on
中创建的变量在包含的do块中不可用吗?它是不同的范围<代码>在类级别上对定义的类方法执行搜索,但在对象级别上是实例方法。检查它是否非常好,并用所有关于关注点的示例进行了描述。ook,这是有意义的,有没有办法使这些变量在对象级别上可用于实例方法?我缺少什么?SamplesController的未定义方法“执行搜索”:Class@rico_mac将perform\u search\u on
传递给class\u方法do…end
就像更新的答案一样。谢谢,这样就行了-但是,在我接受之前,您能告诉我在perform\u search\u on
中创建的变量在包含的do块中不可用吗?它是不同的范围<代码>在类级别上对定义的类方法执行搜索,但在对象级别上是实例方法。检查它是否很好地用示例描述了所有关于关注点的问题
.ook,这是有意义的,是否有方法使这些变量可用于对象级别的实例方法?