ActiveAdmin如何在没有模型的情况下添加自定义控制器

时间:2011-10-09 19:51:53

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

  

可能重复:
  Add page to active admin

我目前正在寻找一种解决方案,用于将没有模型的控制器添加到由ActiveAdmin(和Rails 3.1)生成的admin。 当然,我想在导航栏中添加一个新菜单。

使用ActiveAdmin.register MyControllerWithoutModel do无效。

修改:此问题与Add page to active admin重复,但未找到答案。

2 个答案:

答案 0 :(得分:2)

这对我有用,只需在代码块中替换 ViewLogger 的正确名称即可。这样您就不必在数据库中创建虚拟表。

使用此内容制作文件/app/models/viewlogger.rb,对于更高级的无表格模型,您可能需要查看http://keithmcdonnell.net/activerecord_tableless_model_gem.html或一起查看自己的见解。

class Viewlogger < ActiveRecord::Base

  def self.columns 
    @columns ||= []
  end

  # ...  

end

在/config/initializers/inflections.rb

中添加一个条目
ActiveSupport::Inflector.inflections do |inflect|
  inflect.uncountable %w( viewlogger )
end

在config / routes.rb中为viewlogger设置路由:

match '/admin/viewlogger' => 'admin/viewlogger#index', :as => :admin_viewlogger

现在您可以按如下方式制定activeadmin寄存器块(确保在正确的位置创建部分视图)

ActiveAdmin.register Viewlogger do
  config.comments = false
  before_filter do @skip_sidebar = true end
  # menu false
  config.clear_action_items!   # this will prevent the 'new button' showing up


  controller do
    def index
      # some hopefully useful code
      render 'admin/viewlogger/index', :layout => 'active_admin'
    end
  end   

答案 1 :(得分:0)

我一直在寻找这个来编辑应用程序配置,但是如果没有模型它就不可能。我刚刚在db中创建了带有表的空模型并像往常一样注册资源。

自定义资源:

停用过滤器

config.clear_sidebar_sections!

自定义菜单路径

ActiveAdmin.application.namespaces[:admin].resources['Configuration'].namespace.menu.items.each{|i| i.instance_eval('@cached_url[:admin_configurations_path] = "/admin"')}