2014-09-19 8 views
5

Próbowałem dodać niestandardowe atrybuty do jbuildera, tak jak robię na stronie pokazu na mojej stronie indeksu dla stronicowania z paginacją i nie wyświetlają niestandardowych atrybutów.Jak dodać dodatkowe atrybuty do strony indeksu jBurnera

na przykład, co mam w mojej działania kontrolera jest

def index 
    #respond_with 
    @publishers = Publisher.paginate(:page => params[:page], :per_page => 30) 
    respond_to do |format| 
     format.json 
    end 
    end 

i mój index.json.jbuilder jest

json.array!(@publishers) do |publisher| 
    json.extract! publisher, :id, :name, :url 
    json.categories do 
    publisher.categories.each do |category| 
     json.name category.name 
     json.id category.id 
     json.url url_for(category) 
    end 
    end 
end 

co chciałbym mieć to

json.current_page @publishers.current_page 
json.total_pages @publishers.totla_entries 

json.array!(@publishers) do |publisher| 
    json.extract! publisher, :id, :name, :url 
    json.categories do 
    publisher.categories.each do |category| 
     json.name category.name 
     json.id category.id 
     json.url url_for(category) 
    end 
    end 
end 

tak, że mam strony current_page i total show w wynikach json strony indeksu.

obecnie co mam jest

[{"id":1,"name":"facebook","url":"http://www.facebook.com","categories":{"name":"Art and Crafts","id":1,"url":"/categories/1-art-and-crafts"}}] 

jak mogę tego dokonać. Używam również willpaginate

Odpowiedz

7

Po długim zgiełku i przyjrzeniu się, jak działa szablon pokazu jBlogera, zdałem sobie sprawę, że plik json.array! Metoda została nadrzędnymi niczego poza blokiem więc zrobiłem kilka tweeks i rozwiązać go przez rapować go węzła głównego jak poniżej

json.current_page @publishers.current_page 
json.total_pages @publishers.total_entries 
json.total_records Publisher.count 

json.publishers do |publishersElement| 
    publishersElement.array!(@publishers) do |publisher| 
    json.extract! publisher, :id, :name, :url 
    json.categories do 
     publisher.categories.each do |category| 
     json.name category.name 
     json.id category.id 
     json.url url_for(category) 
     end 
    end 
    end 
end 

a wyjście mam właśnie ten

{"current_page":1,"total_pages":1,"total_records":1,"publishers":[{"id":1,"name":"Bellanaija","url":"http://www.bellanaija.com","categories":{"name":"Art and Crafts","id":1,"url":"/categories/1-art-and-crafts"}}]} 
+2

Dzięki za komentarz odpowiedź , to mi pomogło. Myślę, że dwie z twoich metod są złe. Powinieneś używać 'json.total_pages @ publishers.total_pages' i' json.total_records @ publishers.total_records'. – flyingL123

+0

'@ publishers.total_records' jest w porządku, więc również' total_entries' pracował tak jak w 2014 roku – Uchenna

Powiązane problemy