我在建立控制器问题时遇到问题我希望关注扩展类可用的操作。
假设我有控制器“样本控制器”
class SamplesController < ApplicationController
include Searchable
perform_search_on(Sample, handle: [ClothingType, Company, Collection, Color])
end
我包括“可搜索”模块
module Searchable
extend ActiveSupport::Concern
module ClassMethods
def perform_search_on(klass, associations = {})
.............
end
def filter
respond_to do |format|
format.json { render 'api/search/filters.json' }
end
end
end
end
而且,尽管设置了一个路由,我还是得到了错误
'The action 'filter' could not be found for SamplesController'
。我想这可能与我是否包含或扩展模块有关。我试过使用extend,但也出现了同样的错误。
我仍然需要能够在每个控制器的基础上为模块提供一些配置选项。有没有可能实现我在这里的目标?
谢谢你的帮助
最佳答案
您应该将actions
传递到included
块,perform_search_on
传递到class_methods
块。
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
当您的
Searchable
模块include
方法perform_search_on
和filter
操作时。关于ruby-on-rails - Rails共享 Controller Action ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30979981/