Active Admin - контроллер, не связанный с ресурсами - PullRequest
4 голосов
/ 24 октября 2011

Привет, я пытаюсь реализовать собственный контроллер в активном администраторе + он бы унаследовал нижний колонтитул / заголовок / хлебные крошки активного администратора

мне нужен собственный файл шаблона для обычного действия индекса ..Передача параметра для отображения связанных статистических данных (я бы отобразил их в шаблоне с использованием API Google Chart)

проблема, с которой я столкнулся, заключается в том, что с нуля нельзя ожидать появления боковых панелей, которые мне не очень помогут..

Мне нужно отобразить как 7 различных графиков в этом представлении

Я действительно ценю любую идею, потому что она сводит меня с ума

спасибо Пьер

Ответы [ 2 ]

3 голосов
/ 20 января 2012

В дополнение к предыдущему ответу.Вам даже не нужно определять реальную модель (в папке моделей).Минимальный код, который мне нужен, чтобы получить эту работу, был:

Все в одном файле: 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

2 голосов
/ 12 января 2012

Это то, что сработало для меня, просто замените правильное имя на ViewLogger в кодовых блоках.Таким образом, вам не нужно будет создавать фиктивную таблицу в вашей базе данных.

Создайте файл /app/models/viewlogger.rb с этим содержимым, для более продвинутых моделей без таблиц вы можете проверить http://keithmcdonnell.net/activerecord_tableless_model_gem.html или объедините свои собственные идеи в Google.

class Viewlogger < ActiveRecord::Base

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

  # ...  

end

добавьте запись в /config/initializers/inflections.rb

ActiveSupport::Inflector.inflections do |inflect|
  inflect.uncountable %w( viewlogger )
end

настройте маршрут для вашего Viewlogger в config /route.rb:

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   

end

...