2013-05-20 42 views
1

我有這樣的定製控制器:Rails_admin自定義 - 如何在自定義控制器中使用佈局?

class DownloadsController < ApplicationController 
layout 'layouts/rails_admin/application' 

def index 
end 

end 

我想使用默認rails_admin佈局。但我訪問路徑時索引操作得到這個錯誤:

undefined local variable or method `dashboard_path' for #<#<Class:0x28a4d68>:0x28a2560>¨ 

我如何使用rails_admin使用的佈局?

我需要使用自定義控制器,操作和視圖。只需要將其包含在rails_admin中。

回答

-1

layout 'rails_admin/application' 

而不是

layout 'layouts/rails_admin/application' 
+0

它確實如果你想添加一些軌道管理員則必須繼承RailsAdmin ::的ApplicationController類控制器使用軌道管理佈局的問題是,路由不會被加載.. –

+0

。 –

+0

佈局將從RailsAdmin類繼承後包含在內 –

2

你可以試試這個我的方式,但請改善這一點,如果這是不是最好的做法..

class DownloadsController < ApplicationController 
    include ActionView::Helpers::TextHelper 
    include RailsAdmin::MainHelper 
    include RailsAdmin::ApplicationHelper 
    include RailsAdmin::Engine.routes.url_helpers 

    layout 'layouts/rails_admin/application' 

    def index 
    @page_name = "custom" # just for title on template 
    @is_custom = true # custom marker 
    end 

end 

而且超越控制rails管理局部視圖,通過創建一個文件在 /app/views/layouts/rails_admin/pjax.html.haml

- unless @is_custom.eql? true 
/this is default from rails admin, I do not need this for custom controller 
    :javascript 
    $('.nav.nav-list li.active').removeClass('active'); 
    $('.nav.nav-list li[data-model="#{@abstract_model.to_param}"]').addClass('active'); 

    %title= "#{@abstract_model.try(:pretty_name) || @page_name} | #{[_get_plugin_name[0] || 'Rails', _get_plugin_name[1] || 'Admin'].join(' ')}" 
    .page-header 
    %h1= @page_name 
    - flash && flash.each do |key, value| 
    .alert{class: "alert-#{key}"} 
     %a.close{href: '#', :'data-dismiss' => "alert"}× 
     = value 
    = breadcrumb 
    %ul.nav.nav-tabs 
    = menu_for((@abstract_model ? (@object.try(:persisted?) ? :member : :collection) : :root), @abstract_model, @object) 
    = content_for :contextual_tabs 

/just render yield for custom controller 
= yield