2012-12-24 12 views
7

Używam aktywnego administratora dla panelu administracyjnego. Na stronie użytkownika musisz pokazać znajomym. Mam dwa modele User i Friend.Paginacja dla panelu w aktywnym administratorze

Pytanie więc, czy chcę dodać paginację w "przyjaźni z panelem", czyli bloku user.friends.

Czy ktoś może mi pomóc dodać paginację na jednym panelu? tutaj jest kod, którego używam.

show do 
    attributes_table do 
    row("Photo") { |user| image_tag(user.facebook_photo_url) } 
    rows :name, :sex,:city 
    end 

    panel 'Friendship with' do 
    table_for user.friends do 
     column "" do |friend| 
     (link_to image_tag(friend.facebook_photo_url('small')), admin_friend_path(friend)) + "       ".html_safe + (link_to friend.name, admin_user_path(friend)) 
     end 

    end 
    end 

    active_admin_comments 
end 

PS: model przyjaciel jest rzeczywiście facebook przyjaciół, więc nie mogę używać własny refrential dołącza do modelu użytkownika (tak, nie mów Użyj jeden model zamiast dwóch) i mam kilka innych paneli na tej samej stronie. Muszę się upewnić, że każdy panel ma własną nazwę paraminiową, aby nie kolidowały ze sobą.

Odpowiedz

15

Jakiś czas temu napisałem coś takiego, aby dodać paginację do wielu tabel na jednej stronie. Możesz mieć wiele tabel, zmieniając parametry paginated_collection.

Mam nadzieję, że ten kod może pomóc.

users = User.by_customer(customer.customer_id) #by_customer is scope 
panel 'Users' do 
    paginated_collection(users.page(params[:users_page]).per(15), param_name: 'users_page') do 
    table_for(collection) do |cr| 
     column(I18n.t("cr.start")) { |cr| I18n.l cr.start, format: :raw } 
     #other columns... 
    end 
    end 
end 
+1

nie działa na mnie, mówi metoda niezdefiniowany .per dla ActiveRecord relacji obiektu – jbmyid

+0

@jbmyid - to pewnie dlatego, że używasz will_paginate w projekcie? Jeśli tak, spójrz na ten komentarz: https://github.com/activeadmin/activeadmin/issues/1116#issuecomment-64888450 – asgeo1

+0

to jest takie piękne rozwiązanie. świetny świetny świetnie! –