6

Ich glaube, ich habe einen sehr einfachen Fall, wenn ich verwende Rabl JSON Methoden für Standard RESTful Controller zurückzukehren ...Bedingtes umfassen Kind-Knoten mit RABL

Lassen Sie uns zunächst sagen, dass ich eine typische viele Beziehung mit Eltern und Kind (des Kunden sagen lassen und Konten):

class Customer < ActiveRecord::Base 
    has_many :accounts 
end 

In meinem Controller für Kunden ich habe Index und bearbeiten - Index, wo ich will nur alle Kunden zurück (ohne Konten) und bearbeiten, wo ich eine zurückkehren wollen bestimmter Kunde mit allen seinen Konten. Mit Index möchte ich die Konten nicht für offensichtliche Leistungs (N + 1) Gründe zurückgeben.

In meinem Rabl, ich habe folgendes:

#index.rabl (for listing all customers) 
collection :@customers 
extends "customers/_customer" 

und

#edit.rabl (for editing a single customer) 
object :@customer 
extends "customer/_customer" 

Ich Wiederverwendung der _customer.rabl sowohl für den Index und dem bearbeiten.

#_customer.rabl 
object :@customer 
attributes :name, ...... 

if @include_accounts 
    child :accounts do 
    extends "accounts/_account" 
    end 
end 

ich die @include_accounts in meinem bearbeiten (Controller) und den Index nicht gesetzt - aber das funktioniert nicht - hier im wesentlichen die Instanz var (@include_accounts) wird nie nach unten weitergegeben. Welches ist das richtige Muster, um dies zu implementieren?

+0

Welche Version des Edelsteins benutzt du, 'rabl' oder' rabl-rails'? – drewinglis

+0

Schienen 0.3.1. –

Antwort

3

Auch wenn der rails-rabl-gem behauptet, dass es schneller ist, fand ich, dass Vorlagen für bedingte Ausdrücke nicht so flexibel sind - siehe rabl-rails readme re: instance-Variablen.

+1

Danke. Ich wechselte zum Rabl-Juwel und alles funktionierte wie ein Zauber. –