如何在rails_admin中添加标记模型(ActsAsTaggableOn)?

时间:2013-09-29 12:10:14

标签: ruby-on-rails ruby-on-rails-3.2 rails-admin acts-as-taggable-on kaminari

我安装了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中添加标签模型并管理标签?!

3 个答案:

答案 0 :(得分:4)

我必须在这里解决同样的问题。 我使用了gem 'rails_admin_tag_list',但rubygem的最新版本没有更新为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

答案 1 :(得分:2)

ActiveAdmin出现完全相同的问题:Manage acts_as_taggable tags with activeadmin。我用同样的解决方案解决了它:

使用自定义Kaminari代码向config/initializers添加初始值设定项:

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

在名为app/models的{​​{1}}中创建一个新类:

tag.rb

在RailsAdmin配置中使用# This class fixes a bug between Kaminari, RailsAdmin, and ActsAsTaggableOn. class Tag < ActiveRecord::Base end 模型而不是Tag

ActsAsTaggableOn::Tag

答案 2 :(得分:1)

这是我使用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