2012-04-15 41 views
12

Tôi có một Mô hình được gọi là List rằng has_many :entries. Như thường lệ, Rails 3 tạo ra phương pháp chương trình này cho ListBao gồm kết quả has_many trong kết quả REST REST

def show 
    @list = List.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.json { render json: @list } 
    end 
end 

Làm thế nào tôi có thể thay đổi format.json để bao gồm các entries kết quả từ @list trong phản ứng json không?

Tôi biết tôi có thể chuyển đổi @list thành Hash, thêm giá trị Hash của .entries vào đó, sau đó hiển thị Hash, nhưng tôi nghi ngờ rằng Rails có mẹo nhỏ hơn.

+1

'@list = List.find (params [: id]). Tham gia (: mục) ' –

Trả lời

21

Vâng, có một tùy chọn :include bạn có thể cung cấp cho to_json:

format.json { render json: @list.to_json(:include => :entries) } 
+2

này cũng làm việc với nhiều mô hình , ví dụ: '@ list.to_json (: include => [: entries,: owners])' và bạn có thể muốn tối ưu hóa truy vấn SQL ban đầu của bạn bằng cách sử dụng include có quá, ví dụ: '@list = List.includes ([: tìm (params [: id]) ' – AJP

+1

sẽ tốt hơn nếu bạn sử dụng' as_json' theo cách đó nó sẽ không xâu chuỗi câu trả lời. –

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