2014-09-19 4 views
5

Ich habe versucht, jbuilder benutzerdefinierte Attribute hinzuzufügen, so wie ich es in der show-Seite meiner Indexseite für die Seitennummerierung mit paginate und ohne die benutzerdefinierten Attribute anzeigen lasse.Wie man zusätzliche Attribute zur Jbuilder-Indexseite hinzufügt

zum Beispiel, was ich in meinem Controller-Aktion haben, ist

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

und mein index.json.jbuilder ist

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 

, was ich möchte ist

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 

so dass ich die current_page und die Gesamtseiten in der json-Ausgabe der Indexseite angezeigt habe.

zur Zeit, was ich habe, ist

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

, wie ich dies erreicht werden kann. Ich benutze auch wepaginate

Antwort

7

Nach der langen Hektik, und einen Blick auf, wie die Jbuilder Show Vorlage funktioniert, erkannte ich, dass die JSON.Array! Verfahren deshalb überwiegend sei etwas außerhalb des Blocks so machte ich ein paar tweeks und löste es, indem es in einem Wurzelknoten wie unter

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 

und der Ausgang bekam ich rappen war dieses

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

Vielen Dank für Ihre Antwort veröffentlichen Das hat mir geholfen. Ich denke, zwei deiner Methoden sind falsch. Sie sollten 'json.total_pages @ publishers.total_pages' und' json.total_records @ publishers.total_records' verwenden. – flyingL123

+0

'@ publishers.total_records' ist in Ordnung, also auch' total_entries' verwendet, um wie 2014 zu arbeiten – Uchenna

Verwandte Themen