活动管理员 - 非资源相关的控制器

时间:2011-10-24 00:36:14

标签: ruby-on-rails activeadmin

在那里,我尝试将自己的控制器实现为活动管理员+它将会继承活动管理员的页脚/标题/面包屑

我需要一个自己的模板文件用于常规索引操作...传递一个参数来显示相关的统计数据(我会使用谷歌图表api在模板中渲染它们)

我遇到的问题是没有办法从头开始期待侧边栏不会帮助我很多..

我需要在该视图上显示7个不同的图表

我真的很感激任何想法因为它让我疯了

感谢皮埃尔

2 个答案:

答案 0 :(得分:3)

继续上一个答案。您甚至不需要定义真实模型(在模型文件夹中)。 我需要的最低代码是:

全部在一个文件中:app / admin / charts.rb

class Chart < ActiveRecord::Base
end

ActiveAdmin.register Chart do
  config.comments = false
  config.clear_action_items!
  before_filter do @skip_sidebar = true end


  controller do
    def index
      params[:action] = "Google Charts" # this sets the page title (so it doesnt just render 'index')
      render 'admin/charts/index', :layout => 'active_admin' # renders the index view in app/views/admin/charts
    end
  end
end

我用它来做这个要点: https://gist.github.com/1644526

答案 1 :(得分: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