Ransack on Gutentag标签 - 未定义的方法`type'代表nil:NilClass

时间:2018-06-19 05:55:36

标签: ruby-on-rails ransack

有没有人让Ransack去搜索Gutentag tag_names?我有使ActsAsTaggableOn工作的问题,但Gutentag的工作就像一个魅力,我只需要能够搜索它..

resource.tag_names会返回resource的标记列表。

我的模特

  def self.ransackable_attributes(auth_object = nil)
      ['title','content', 'tag_names']
  end

行错误为@resources = @q.result(distinct: true).paginate(:page => params[:page])

我假设tag_names没有为Ransack返回正确的数据。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这是因为您的表中没有列tag_names。因此,您需要为ransackable_attributes表定义gutentag_tags,因为这是在引擎盖下调用name列的表。在config/initializers目录中为gutentag创建初始化程序,根据需要为其命名。在初始化程序中添加以下内容:

if ActiveRecord::Base.connection.table_exists? 'gutentag_tags'
  model =  Object.const_get "Gutentag::Tag"
  model.singleton_class.class_eval do
    define_method(:ransackable_attributes) do |auth_object|
      auth_object = nil
      ['name']
    end
  end
end

虽然我自己没有尝试过,但这应该可以解决问题。如果您遇到这段代码的问题,请随时提出任何问题。