2014-09-19 16 views
5

Tôi đã cố gắng thêm thuộc tính tùy chỉnh vào jbuilder như tôi làm trong trang hiển thị tới trang chỉ mục của tôi để phân trang và sẽ không hiển thị thuộc tính tùy chỉnh.Làm thế nào để thêm thuộc tính phụ vào trang chỉ mục jbuilder

ví dụ những gì tôi có trong hành động điều khiển của tôi là

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

và index.json.jbuilder của tôi là

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 

những gì tôi muốn làm là

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 

để tôi có trang current_page và tổng số trang hiển thị trong đầu ra json của trang chỉ mục.

hiện những gì tôi có là

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

làm thế nào tôi có thể thực hiện điều này. Tôi cũng đang sử dụng willpaginate

Trả lời

7

Sau sự hối hả lâu dài, và xem cách hoạt động của trình xây dựng biểu mẫu jbuilder tôi nhận ra rằng json.array! phương pháp được trọng bất cứ điều gì ngoài khối vì vậy tôi thực hiện một vài tweeks và giải quyết nó bằng cách đọc rap nó trong một node gốc như dưới đây

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 

và đầu ra tôi đã nhận được điều này

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

Cảm ơn cho đăng câu trả lời của bạn , điều này đã giúp tôi. Tôi nghĩ rằng hai phương pháp của bạn là sai. Bạn nên sử dụng 'json.total_pages @ publishers.total_pages' và' json.total_records @ publishers.total_records'. – flyingL123

+0

'@ publishers.total_records' là tốt nên' total_entries' được sử dụng để làm việc vào năm 2014 – Uchenna

Các vấn đề liên quan