ruby-on-rails - 对 Gutentag 标签进行搜查 - 未定义方法 `type' for nil :NilClass

标签 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 返回正确的数据。有什么想法吗?

最佳答案

发生这种情况是因为表中没有 tag_names 列。因此,您需要为 gutentag_tags 表定义 ransackable_attributes,因为该表的 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

尽管我自己没有尝试过,但这应该可以解决问题。如果您在使用这段代码时遇到问题,请随时询问。

关于ruby-on-rails - 对 Gutentag 标签进行搜查 - 未定义方法 `type' for nil :NilClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50921458/

相关文章:

ruby-on-rails - bundle 安装 : ERROR: Failed to build gem native extension. nio4r gem

ruby-on-rails - 在 Rails4.x 中渲染编辑表单时出现参数丢失或值为空错误

javascript - 如何为 Twitter 客户端创建一个回复按钮,自动在 'tweet' 表单中填写用户名?

ruby-on-rails-4 - 如何在 rails 中使用 will_paginate 和 ransack

ruby-on-rails - 在模型中使用具有 "_eq"关系的 ActiveAdmin 时,如何修复 Ransack 未定义方法 ":through"?

ruby-on-rails - Rails 4中的nginx 403禁止错误(没有index.html文件)

ruby-on-rails - 在启用事务夹具的 Rails 4 中测试 after_commit 钩子(Hook)

ruby-on-rails - 升级 rails 后 Ransack 关联搜索中断

ruby-on-rails-3 - Rails 3 - 搜查 - check_box_tag

ruby-on-rails - 如何传递 ransack 参数 [ :q] object to another method in rails