Rails - ActiveAdmin未在菜单中显示新资源

时间:2016-02-09 11:15:16

标签: ruby ruby-on-rails-4 activeadmin

我正在使用带有Rails 4和Grape的ActiveAdmin。

我正在创建新的AA资源     ruby '2.2.3' gem 'rails', '4.2.4' gem 'pg' gem 'sass-rails', '~> 5.0' gem 'uglifier', '>= 1.3.0' gem 'coffee-rails', '~> 4.1.0' gem 'jquery-rails' gem 'turbolinks' gem 'jbuilder', '~> 2.0' gem 'sdoc', '~> 0.4.0', group: :doc # gem 'bcrypt', '~> 3.1.7' # gem 'unicorn' # gem 'capistrano-rails', group: :development group :development, :test do debugger console gem 'byebug' end group :development do gem 'web-console', '~> 2.0' gem 'spring' end gem 'devise' gem 'activeadmin', github: 'activeadmin' gem 'grape' gem 'cancan' gem 'jwt' gem 'aws-sdk', '~> 2' gem 'rmagick' gem 'grape-swagger' 它以前工作得很好。每个资源都显示为管理控制台中的菜单链接。

但是由于某些原因,对于我正在创建的新模型,Active Admin不会在菜单中显示相同的资源。

导致这种情况发生的原因可能会有很大帮助。

Ruby版本 - 2.2.3

Rails版本 - 4.2.4

Active Admin Version - 1.0.0

这是我的GemFile

ActiveAdmin.register NewModel do # DOESN'T WORK AND DOESN'T SHOW UP IN MENU

    # See permitted parameters documentation:
    # https://github.com/activeadmin/activeadmin/blob/master/docs/2 resource-    customization.md#setting-up-strong-parameters
    #
    # permit_params :list, :of, :attributes, :on, :model
    #
    # or
    #
    # permit_params do
    #   permitted = [:permitted, :attributes]
    #   permitted << :other if resource.something?
    #   permitted
    # end

end

ActiveAdmin.register OldModel, :as => 'Some Name' do # WORKS AND SHOWS UP IN MENU

    # See permitted parameters documentation:
    # https://github.com/activeadmin/activeadmin/blob/master/docs/2 resource-    customization.md#setting-up-strong-parameters
    #
    # permit_params :list, :of, :attributes, :on, :model
    #
    # or
    #
    # permit_params do
    #   permitted = [:permitted, :attributes]
    #   permitted << :other if resource.something?
    #   permitted
    # end

end

修改 新的模型资源不起作用。但是,如果我将同一文件中的模型重命名为某个较旧的模型,则显示正常。

生成的ActiveAdmin资源文件 -

{{1}}

2 个答案:

答案 0 :(得分:3)

如果您在ActiveAdmin中使用CanCan gem,则models文件夹将包含<proj-name>_admin_ability.rb文件,您需要将新模型添加到can :manage(或:阅读)清单。

include CanCan::Ability

def initialize(user)
    can :manage, [User, ModelClassName]
end

答案 1 :(得分:2)

是的,可以通过授权适配器阻止显示新资源。它可以是CanCan或Pundit或使用Active Admin配置的任何其他授权系统。

您可以从value

获取您的有效管理员使用的特定授权方案

在读取的行上 config/initializers/active_admin.rb

获取授权适配器后,您需要将新资源添加到正确的管理授权中。例如,Pundit,您将需要为资源创建一个新策略,允许管理员用户执行特定操作。