2013-09-24 12 views
14

私はActiveAdminの宝石とレール3アプリを持っています。私の目標は、レイアウトを保つカスタムビューでカスタムコントローラをレンダリングすることです。ActiveAdminのレイアウトを保持する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レイアウトを維持する手段はありますか?

答えて

7

問題が解決しました。ちょうどあなたのコードに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 
+3

これはもう動作しません... – MFrazier

+2

@MFrazier理由や説明を教えてください。 – Pistos

+2

私のために働いていません。エラー: '未定義のローカル変数またはメソッド 'view_factory' for:Arbre :: Context' – WarLord

3

コードはここにある:モデルの管理レイアウトで以下のビュー

ActiveAdmin.register_page "myname" do 

    content only: :index do 
    render 'index' 
    end 

    controller do 
    def index 
    end 
    end 
end 

その後としてアプリ/ビュー/管理/ MYNAME/の下にビューを追加_index.html.erb