2014-09-19 1 views
5

J'ai essayé d'ajouter des attributs personnalisés à jbuilder comme je le fais dans la page d'affichage de ma page d'index pour paginer avec paginer et ne pas afficher les attributs personnalisés.Comment ajouter des attributs supplémentaires à la page d'index de jbuilder

par exemple ce que j'ai dans mon action du contrôleur est

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

et mon index.json.jbuilder est

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 

ce que je voudrais avoir est

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 

de sorte que j'ai la current_page et le total des pages qui apparaissent dans la sortie json de la page d'index.

actuellement ce que j'ai est

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

comment puis-je y arriver. J'utilise également willpaginate

Répondre

7

Après le long tourbillon, et en regardant comment le modèle de spectacle de jbuilder fonctionne, j'ai réalisé que le json.array! méthode a été tout PRÉPONDÉRANTS en dehors du bloc donc je fait quelques tweeks et résolu par rapper dans un nœud racine comme ci-dessous

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 

et la sortie i obtenu était cette

{"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

Merci d'envoyer votre réponse Cela m'a aidé. Je pense que deux de vos méthodes sont fausses. Vous devriez utiliser 'json.total_pages @ publishers.total_pages' et' json.total_records @ publishers.total_records'. – flyingL123

+0

'@ publishers.total_records' est bien ainsi aussi' total_entries' utilisé pour 2014 – Uchenna

Questions connexes