2013-09-24 21 views
14

Ho un'app per rails 3 con la gemma ActiveAdmin. Il mio obiettivo è creare un rendering personalizzato del controller in viste personalizzate che mantengano il layout.Visualizzazioni personalizzate ActiveAdmin che mantengono il layout ActiveAdmin

sono riuscito a fare un controller personalizzato il rendering in visualizzazioni personalizzate con questo codice:

pages.rb:

ActiveAdmin.register_page 'Pages' do 

    content only: :index do 
    render 'index' 
    end 

    content only: :edit do 
    render partial: 'edit' 
    end 

    controller do 
    def index 
     @search = Page.includes(:translations).where("page_translations.locale='fr'").metasearch(params[:search]) 
     @pages = @search.page params[:page] 
    end 

    def edit 
     @page = Page.find params[:id] 
    end 
    end 
end 

E per esempio il mio file index.html.erb:

<h1>Pages</h1> 
<%= form_for @search, :url => admin_pages_path, :html => {:method => :get, :class => "form-inline" } do |f| %> 
    <%= f.text_field :translations_name_contains , :class => "search-query input-medium focused" %> 
    <%= f.submit("Search", :class => "btn btn-primary") %> 
<% end %> 

<table> 
    <thead> 
    <tr> 
     <th><%= sort_link @search, :translations_name, "Titre" %></th> 
     <th><%= sort_link @search, :permalink, "Permalien" %></th> 
     <th>Actions</th> 
    </tr> 
    </thead> 
    <tbody> 
    <% @pages.each do |page| %> 
     <tr> 
     <td><%= page.name %></td> 
     <td><%= page.permalink %></td> 
     <td><%= link_to("Update",edit_admin_page_path(page)) %></td> 
     </tr> 
    <% end %> 
    </tbody> 
</table> 

C'è un mezzo per mantenere il layout ActiveAdmin?

risposta

7

Problema risolto. Basta aggiungere layout 'active_admin' al codice:

controller do 
    layout 'active_admin' # <-- here 
    def index 
    @search = Page.includes(:translations).where("page_translations.locale='fr'").metasearch(params[:search]) 
    @pages = @search.page params[:page] 
    end 

    def edit 
    @page = Page.find params[:id] 
    end 
end 
+3

Questo non funziona più ... – MFrazier

+2

@MFrazier Puoi spiegare o collegare perché? – Pistos

+2

Non funziona per me. Ottieni un errore: 'variabile locale non definita o metodo 'view_factory' per: Arbre :: Context' – WarLord

3

codice è qui: per il modello Less con il layout di amministrazione

ActiveAdmin.register_page "myname" do 

    content only: :index do 
    render 'index' 
    end 

    controller do 
    def index 
    end 
    end 
end 

Quindi aggiungere viste sotto app/views/admin/myname/ come _index.html.erb

Problemi correlati