2

我安装 rails admin 并将所有模型包含在 rails admin 的活动记录中,

第一次,当安装 rails admin 时显示我这个错误

NoMethodError in RailsAdmin::MainController#index

undefined method `per_page_kaminari' for #<ActiveRecord::Relation:0x00000006713e18>

并通过添加此配置来修复它

Kaminari.configure do |config|
    config.page_method_name = :per_page_kaminari
end

在项目中安装acts_as_taggable_on gem 时,rails admin 没有在其中添加标签模型(我在其他模型中添加了字段 tags_list),但我想在 rails admin 中添加标签模型来管理标签(索引、创建、编辑和销毁)。 .

我添加了这一行

config.included_models = ['ActsAsTaggableOn::Tag'] 

在 rails_admin.rb 并在仪表板中显示我的标签模型,但是当打开列表标签时,它再次向我显示此错误

NoMethodError in RailsAdmin::MainController#index

undefined method `per_page_kaminari' for #<ActiveRecord::Relation:0x00000006713e18>

我应该怎么做才能在rails admin中添加标签模型并管理标签?!

4

3 回答 3

4

我必须在这里解决同样的问题。我使用了gem 'rails_admin_tag_list',但 ruby​​gem 的最新版本没有针对 rails 4 更新(不支持 RailsAdmin 属性)。所以你需要从 master 那里得到一个包含fix的。

gem 'rails_admin_tag_list', git: 'https://github.com/kryzhovnik/rails_admin_tag_list.git', branch: 'master'

确实添加:

config.included_models = ['YourModel', 'ActsAsTaggableOn::Tag']

class YourModel < ActiveRecord::Base
  acts_as_taggable # dont add attr_accessible stuff since we're in rails 4
end

然后选择标签列表的配置:

config.model 'YourModel' do
  configure :tag_list  do
    partial 'tag_list_with_autocomplete'
  end
  exclude_fields :body, :locale, :base_tags, :tags
end
于 2015-07-26T09:45:37.293 回答
2

ActiveAdmin 出现完全相同的问题:使用 activeadmin管理acts_as_taggable 标记。我用相同的解决方案解决了它:

config/initializers使用自定义 Kaminari 代码添加一个初始化程序:

Kaminari.configure do |config|
    config.page_method_name = :per_page_kaminari
end

app/models在调用中创建一个新类tag.rb

# This class fixes a bug between Kaminari, RailsAdmin, and ActsAsTaggableOn.
class Tag < ActiveRecord::Base
end

使用Tag模型而不是ActsAsTaggableOn::Tag在 RailsAdmin 配置中:

config.included_models = [Tag] 
于 2014-04-16T22:31:56.557 回答
2

这是我使用 rails 4 和字段配置的解决方案(必须在congig.included_models调用之前):

config.model ActsAsTaggableOn::Tag do 
    edit do 
      exclude_fields :taggings_count
      exclude_fields :taggings
    end
  end

  config.model ActsAsTaggableOn::Tagging do 
    edit do 
      exclude_fields :context
    end
  end

  admin_models = ActiveRecord::Base.descendants.map(&:name)
  admin_models.delete("PgSearch::Document") #if you use it
  admin_models.delete("PaperTrail::Version") #if you use it
  #add other models to exclude here
  config.included_models = admin_models
于 2014-11-10T09:26:23.570 回答