Пользовательские представления ActiveAdmin, которые сохраняют макет ActiveAdmin

У меня есть приложение rails 3 с драгоценным камнем ActiveAdmin. Моя цель - сделать персонализированный рендеринг контроллера в пользовательских представлениях, которые сохраняют его.

Мне удалось создать пользовательский рендеринг контроллера в пользовательских представлениях с помощью этого кода:

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

И, например, файл 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>

Есть ли способ сохранить макет ActiveAdmin?

Ответы

Ответ 1

Проблема решена. Просто добавьте layout 'active_admin' к вашему коду:

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

Ответ 2

код здесь: для просмотра модели меньше с макетом администратора

  ActiveAdmin.register_page "myname" do

  content only: :index do
    render 'index'
  end

  controller do
     def index
     end
  end
end

Затем добавьте представления под app/views/admin/myname/ как _index.html.erb